1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module atk.c.types;
26 
27 public import glib.c.types;
28 public import gobject.c.types;
29 
30 
31 /**
32  * This is a singly-linked list (a #GSList) of #AtkAttribute. It is
33  * used by atk_text_get_run_attributes(),
34  * atk_text_get_default_attributes(),
35  * atk_editable_text_set_run_attributes(),
36  * atk_document_get_attributes() and atk_object_get_attributes()
37  */
38 public alias GSList AtkAttributeSet;
39 
40 public alias ulong AtkState;
41 
42 /**
43  * Specifies how xy coordinates are to be interpreted. Used by functions such
44  * as atk_component_get_position() and atk_text_get_character_extents()
45  */
46 public enum AtkCoordType
47 {
48 	/**
49 	 * specifies xy coordinates relative to the screen
50 	 */
51 	SCREEN = 0,
52 	/**
53 	 * specifies xy coordinates relative to the widget's
54 	 * top-level window
55 	 */
56 	WINDOW = 1,
57 	/**
58 	 * specifies xy coordinates relative to the widget's
59 	 * immediate parent. Since: 2.30
60 	 */
61 	PARENT = 2,
62 }
63 alias AtkCoordType CoordType;
64 
65 /**
66  * Describes the type of link
67  */
68 public enum AtkHyperlinkStateFlags
69 {
70 	/**
71 	 * Link is inline
72 	 */
73 	INLINE = 1,
74 }
75 alias AtkHyperlinkStateFlags HyperlinkStateFlags;
76 
77 /**
78  * Specifies the type of a keyboard evemt.
79  */
80 public enum AtkKeyEventType
81 {
82 	/**
83 	 * specifies a key press event
84 	 */
85 	PRESS = 0,
86 	/**
87 	 * specifies a key release event
88 	 */
89 	RELEASE = 1,
90 	/**
91 	 * Not a valid value; specifies end of enumeration
92 	 */
93 	LAST_DEFINED = 2,
94 }
95 alias AtkKeyEventType KeyEventType;
96 
97 /**
98  * Describes the layer of a component
99  *
100  * These enumerated "layer values" are used when determining which UI
101  * rendering layer a component is drawn into, which can help in making
102  * determinations of when components occlude one another.
103  */
104 public enum AtkLayer
105 {
106 	/**
107 	 * The object does not have a layer
108 	 */
109 	INVALID = 0,
110 	/**
111 	 * This layer is reserved for the desktop background
112 	 */
113 	BACKGROUND = 1,
114 	/**
115 	 * This layer is used for Canvas components
116 	 */
117 	CANVAS = 2,
118 	/**
119 	 * This layer is normally used for components
120 	 */
121 	WIDGET = 3,
122 	/**
123 	 * This layer is used for layered components
124 	 */
125 	MDI = 4,
126 	/**
127 	 * This layer is used for popup components, such as menus
128 	 */
129 	POPUP = 5,
130 	/**
131 	 * This layer is reserved for future use.
132 	 */
133 	OVERLAY = 6,
134 	/**
135 	 * This layer is used for toplevel windows.
136 	 */
137 	WINDOW = 7,
138 }
139 alias AtkLayer Layer;
140 
141 /**
142  * Describes the type of the relation
143  */
144 public enum AtkRelationType
145 {
146 	/**
147 	 * Not used, represens "no relationship" or an error condition.
148 	 */
149 	NULL = 0,
150 	/**
151 	 * Indicates an object controlled by one or more target objects.
152 	 */
153 	CONTROLLED_BY = 1,
154 	/**
155 	 * Indicates an object is an controller for one or more target objects.
156 	 */
157 	CONTROLLER_FOR = 2,
158 	/**
159 	 * Indicates an object is a label for one or more target objects.
160 	 */
161 	LABEL_FOR = 3,
162 	/**
163 	 * Indicates an object is labelled by one or more target objects.
164 	 */
165 	LABELLED_BY = 4,
166 	/**
167 	 * Indicates an object is a member of a group of one or more target objects.
168 	 */
169 	MEMBER_OF = 5,
170 	/**
171 	 * Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.
172 	 */
173 	NODE_CHILD_OF = 6,
174 	/**
175 	 * Indicates that the object has content that flows logically to another
176 	 * AtkObject in a sequential way, (for instance text-flow).
177 	 */
178 	FLOWS_TO = 7,
179 	/**
180 	 * Indicates that the object has content that flows logically from
181 	 * another AtkObject in a sequential way, (for instance text-flow).
182 	 */
183 	FLOWS_FROM = 8,
184 	/**
185 	 * Indicates a subwindow attached to a component but otherwise has no connection in  the UI heirarchy to that component.
186 	 */
187 	SUBWINDOW_OF = 9,
188 	/**
189 	 * Indicates that the object visually embeds
190 	 * another object's content, i.e. this object's content flows around
191 	 * another's content.
192 	 */
193 	EMBEDS = 10,
194 	/**
195 	 * Reciprocal of %ATK_RELATION_EMBEDS, indicates that
196 	 * this object's content is visualy embedded in another object.
197 	 */
198 	EMBEDDED_BY = 11,
199 	/**
200 	 * Indicates that an object is a popup for another object.
201 	 */
202 	POPUP_FOR = 12,
203 	/**
204 	 * Indicates that an object is a parent window of another object.
205 	 */
206 	PARENT_WINDOW_OF = 13,
207 	/**
208 	 * Reciprocal of %ATK_RELATION_DESCRIPTION_FOR. Indicates that one
209 	 * or more target objects provide descriptive information about this object. This relation
210 	 * type is most appropriate for information that is not essential as its presentation may
211 	 * be user-configurable and/or limited to an on-demand mechanism such as an assistive
212 	 * technology command. For brief, essential information such as can be found in a widget's
213 	 * on-screen label, use %ATK_RELATION_LABELLED_BY. For an on-screen error message, use
214 	 * %ATK_RELATION_ERROR_MESSAGE. For lengthy extended descriptive information contained in
215 	 * an on-screen object, consider using %ATK_RELATION_DETAILS as assistive technologies may
216 	 * provide a means for the user to navigate to objects containing detailed descriptions so
217 	 * that their content can be more closely reviewed.
218 	 */
219 	DESCRIBED_BY = 14,
220 	/**
221 	 * Reciprocal of %ATK_RELATION_DESCRIBED_BY. Indicates that this
222 	 * object provides descriptive information about the target object(s). See also
223 	 * %ATK_RELATION_DETAILS_FOR and %ATK_RELATION_ERROR_FOR.
224 	 */
225 	DESCRIPTION_FOR = 15,
226 	/**
227 	 * Indicates an object is a cell in a treetable and is expanded to display other cells in the same column.
228 	 */
229 	NODE_PARENT_OF = 16,
230 	/**
231 	 * Reciprocal of %ATK_RELATION_DETAILS_FOR. Indicates that this object
232 	 * has a detailed or extended description, the contents of which can be found in the target
233 	 * object(s). This relation type is most appropriate for information that is sufficiently
234 	 * lengthy as to make navigation to the container of that information desirable. For less
235 	 * verbose information suitable for announcement only, see %ATK_RELATION_DESCRIBED_BY. If
236 	 * the detailed information describes an error condition, %ATK_RELATION_ERROR_FOR should be
237 	 * used instead. @Since: ATK-2.26.
238 	 */
239 	DETAILS = 17,
240 	/**
241 	 * Reciprocal of %ATK_RELATION_DETAILS. Indicates that this object
242 	 * provides a detailed or extended description about the target object(s). See also
243 	 * %ATK_RELATION_DESCRIPTION_FOR and %ATK_RELATION_ERROR_FOR. @Since: ATK-2.26.
244 	 */
245 	DETAILS_FOR = 18,
246 	/**
247 	 * Reciprocal of %ATK_RELATION_ERROR_FOR. Indicates that this object
248 	 * has one or more errors, the nature of which is described in the contents of the target
249 	 * object(s). Objects that have this relation type should also contain %ATK_STATE_INVALID_ENTRY
250 	 * in their #AtkStateSet. @Since: ATK-2.26.
251 	 */
252 	ERROR_MESSAGE = 19,
253 	/**
254 	 * Reciprocal of %ATK_RELATION_ERROR_MESSAGE. Indicates that this object
255 	 * contains an error message describing an invalid condition in the target object(s). @Since:
256 	 * ATK_2.26.
257 	 */
258 	ERROR_FOR = 20,
259 	/**
260 	 * Not used, this value indicates the end of the enumeration.
261 	 */
262 	LAST_DEFINED = 21,
263 }
264 alias AtkRelationType RelationType;
265 
266 /**
267  * Describes the role of an object
268  *
269  * These are the built-in enumerated roles that UI components can have
270  * in ATK.  Other roles may be added at runtime, so an AtkRole >=
271  * %ATK_ROLE_LAST_DEFINED is not necessarily an error.
272  */
273 public enum AtkRole
274 {
275 	/**
276 	 * Invalid role
277 	 */
278 	INVALID = 0,
279 	/**
280 	 * A label which represents an accelerator
281 	 */
282 	ACCELERATOR_LABEL = 1,
283 	/**
284 	 * An object which is an alert to the user. Assistive Technologies typically respond to ATK_ROLE_ALERT by reading the entire onscreen contents of containers advertising this role.  Should be used for warning dialogs, etc.
285 	 */
286 	ALERT = 2,
287 	/**
288 	 * An object which is an animated image
289 	 */
290 	ANIMATION = 3,
291 	/**
292 	 * An arrow in one of the four cardinal directions
293 	 */
294 	ARROW = 4,
295 	/**
296 	 * An object that displays a calendar and allows the user to select a date
297 	 */
298 	CALENDAR = 5,
299 	/**
300 	 * An object that can be drawn into and is used to trap events
301 	 */
302 	CANVAS = 6,
303 	/**
304 	 * A choice that can be checked or unchecked and provides a separate indicator for the current state
305 	 */
306 	CHECK_BOX = 7,
307 	/**
308 	 * A menu item with a check box
309 	 */
310 	CHECK_MENU_ITEM = 8,
311 	/**
312 	 * A specialized dialog that lets the user choose a color
313 	 */
314 	COLOR_CHOOSER = 9,
315 	/**
316 	 * The header for a column of data
317 	 */
318 	COLUMN_HEADER = 10,
319 	/**
320 	 * A collapsible list of choices the user can select from
321 	 */
322 	COMBO_BOX = 11,
323 	/**
324 	 * An object whose purpose is to allow a user to edit a date
325 	 */
326 	DATE_EDITOR = 12,
327 	/**
328 	 * An inconifed internal frame within a DESKTOP_PANE
329 	 */
330 	DESKTOP_ICON = 13,
331 	/**
332 	 * A pane that supports internal frames and iconified versions of those internal frames
333 	 */
334 	DESKTOP_FRAME = 14,
335 	/**
336 	 * An object whose purpose is to allow a user to set a value
337 	 */
338 	DIAL = 15,
339 	/**
340 	 * A top level window with title bar and a border
341 	 */
342 	DIALOG = 16,
343 	/**
344 	 * A pane that allows the user to navigate through and select the contents of a directory
345 	 */
346 	DIRECTORY_PANE = 17,
347 	/**
348 	 * An object used for drawing custom user interface elements
349 	 */
350 	DRAWING_AREA = 18,
351 	/**
352 	 * A specialized dialog that lets the user choose a file
353 	 */
354 	FILE_CHOOSER = 19,
355 	/**
356 	 * A object that fills up space in a user interface
357 	 */
358 	FILLER = 20,
359 	/**
360 	 * A specialized dialog that lets the user choose a font
361 	 */
362 	FONT_CHOOSER = 21,
363 	/**
364 	 * A top level window with a title bar, border, menubar, etc.
365 	 */
366 	FRAME = 22,
367 	/**
368 	 * A pane that is guaranteed to be painted on top of all panes beneath it
369 	 */
370 	GLASS_PANE = 23,
371 	/**
372 	 * A document container for HTML, whose children represent the document content
373 	 */
374 	HTML_CONTAINER = 24,
375 	/**
376 	 * A small fixed size picture, typically used to decorate components
377 	 */
378 	ICON = 25,
379 	/**
380 	 * An object whose primary purpose is to display an image
381 	 */
382 	IMAGE = 26,
383 	/**
384 	 * A frame-like object that is clipped by a desktop pane
385 	 */
386 	INTERNAL_FRAME = 27,
387 	/**
388 	 * An object used to present an icon or short string in an interface
389 	 */
390 	LABEL = 28,
391 	/**
392 	 * A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
393 	 */
394 	LAYERED_PANE = 29,
395 	/**
396 	 * An object that presents a list of objects to the user and allows the user to select one or more of them
397 	 */
398 	LIST = 30,
399 	/**
400 	 * An object that represents an element of a list
401 	 */
402 	LIST_ITEM = 31,
403 	/**
404 	 * An object usually found inside a menu bar that contains a list of actions the user can choose from
405 	 */
406 	MENU = 32,
407 	/**
408 	 * An object usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
409 	 */
410 	MENU_BAR = 33,
411 	/**
412 	 * An object usually contained in a menu that presents an action the user can choose
413 	 */
414 	MENU_ITEM = 34,
415 	/**
416 	 * A specialized pane whose primary use is inside a DIALOG
417 	 */
418 	OPTION_PANE = 35,
419 	/**
420 	 * An object that is a child of a page tab list
421 	 */
422 	PAGE_TAB = 36,
423 	/**
424 	 * An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object
425 	 */
426 	PAGE_TAB_LIST = 37,
427 	/**
428 	 * A generic container that is often used to group objects
429 	 */
430 	PANEL = 38,
431 	/**
432 	 * A text object uses for passwords, or other places where the text content is not shown visibly to the user
433 	 */
434 	PASSWORD_TEXT = 39,
435 	/**
436 	 * A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices
437 	 */
438 	POPUP_MENU = 40,
439 	/**
440 	 * An object used to indicate how much of a task has been completed
441 	 */
442 	PROGRESS_BAR = 41,
443 	/**
444 	 * An object the user can manipulate to tell the application to do something
445 	 */
446 	PUSH_BUTTON = 42,
447 	/**
448 	 * A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
449 	 */
450 	RADIO_BUTTON = 43,
451 	/**
452 	 * A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
453 	 */
454 	RADIO_MENU_ITEM = 44,
455 	/**
456 	 * A specialized pane that has a glass pane and a layered pane as its children
457 	 */
458 	ROOT_PANE = 45,
459 	/**
460 	 * The header for a row of data
461 	 */
462 	ROW_HEADER = 46,
463 	/**
464 	 * An object usually used to allow a user to incrementally view a large amount of data.
465 	 */
466 	SCROLL_BAR = 47,
467 	/**
468 	 * An object that allows a user to incrementally view a large amount of information
469 	 */
470 	SCROLL_PANE = 48,
471 	/**
472 	 * An object usually contained in a menu to provide a visible and logical separation of the contents in a menu
473 	 */
474 	SEPARATOR = 49,
475 	/**
476 	 * An object that allows the user to select from a bounded range
477 	 */
478 	SLIDER = 50,
479 	/**
480 	 * A specialized panel that presents two other panels at the same time
481 	 */
482 	SPLIT_PANE = 51,
483 	/**
484 	 * An object used to get an integer or floating point number from the user
485 	 */
486 	SPIN_BUTTON = 52,
487 	/**
488 	 * An object which reports messages of minor importance to the user
489 	 */
490 	STATUSBAR = 53,
491 	/**
492 	 * An object used to represent information in terms of rows and columns
493 	 */
494 	TABLE = 54,
495 	/**
496 	 * A cell in a table
497 	 */
498 	TABLE_CELL = 55,
499 	/**
500 	 * The header for a column of a table
501 	 */
502 	TABLE_COLUMN_HEADER = 56,
503 	/**
504 	 * The header for a row of a table
505 	 */
506 	TABLE_ROW_HEADER = 57,
507 	/**
508 	 * A menu item used to tear off and reattach its menu
509 	 */
510 	TEAR_OFF_MENU_ITEM = 58,
511 	/**
512 	 * An object that represents an accessible terminal.  (Since: 0.6)
513 	 */
514 	TERMINAL = 59,
515 	/**
516 	 * An interactive widget that supports multiple lines of text and
517 	 * optionally accepts user input, but whose purpose is not to solicit user input.
518 	 * Thus ATK_ROLE_TEXT is appropriate for the text view in a plain text editor
519 	 * but inappropriate for an input field in a dialog box or web form. For widgets
520 	 * whose purpose is to solicit input from the user, see ATK_ROLE_ENTRY and
521 	 * ATK_ROLE_PASSWORD_TEXT. For generic objects which display a brief amount of
522 	 * textual information, see ATK_ROLE_STATIC.
523 	 */
524 	TEXT = 60,
525 	/**
526 	 * A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
527 	 */
528 	TOGGLE_BUTTON = 61,
529 	/**
530 	 * A bar or palette usually composed of push buttons or toggle buttons
531 	 */
532 	TOOL_BAR = 62,
533 	/**
534 	 * An object that provides information about another object
535 	 */
536 	TOOL_TIP = 63,
537 	/**
538 	 * An object used to represent hierarchical information to the user
539 	 */
540 	TREE = 64,
541 	/**
542 	 * An object capable of expanding and collapsing rows as well as showing multiple columns of data.   (Since: 0.7)
543 	 */
544 	TREE_TABLE = 65,
545 	/**
546 	 * The object contains some Accessible information, but its role is not known
547 	 */
548 	UNKNOWN = 66,
549 	/**
550 	 * An object usually used in a scroll pane
551 	 */
552 	VIEWPORT = 67,
553 	/**
554 	 * A top level window with no title or border.
555 	 */
556 	WINDOW = 68,
557 	/**
558 	 * An object that serves as a document header. (Since: 1.1.1)
559 	 */
560 	HEADER = 69,
561 	/**
562 	 * An object that serves as a document footer.  (Since: 1.1.1)
563 	 */
564 	FOOTER = 70,
565 	/**
566 	 * An object which is contains a paragraph of text content.   (Since: 1.1.1)
567 	 */
568 	PARAGRAPH = 71,
569 	/**
570 	 * An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such).   (Since: 1.1.1)
571 	 */
572 	RULER = 72,
573 	/**
574 	 * The object is an application object, which may contain @ATK_ROLE_FRAME objects or other types of accessibles.  The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION.   (Since: 1.1.4)
575 	 */
576 	APPLICATION = 73,
577 	/**
578 	 * The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.   (Since: 1.3)
579 	 */
580 	AUTOCOMPLETE = 74,
581 	/**
582 	 * The object is an editable text object in a toolbar.  (Since: 1.5)
583 	 */
584 	EDIT_BAR = 75,
585 	/**
586 	 * The object is an embedded container within a document or panel.  This role is a grouping "hint" indicating that the contained objects share a context.  (Since: 1.7.2)
587 	 */
588 	EMBEDDED = 76,
589 	/**
590 	 * The object is a component whose textual content may be entered or modified by the user, provided @ATK_STATE_EDITABLE is present.   (Since: 1.11)
591 	 */
592 	ENTRY = 77,
593 	/**
594 	 * The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property.  (Since: 1.11)
595 	 */
596 	CHART = 78,
597 	/**
598 	 * The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image.  (Since: 1.11)
599 	 */
600 	CAPTION = 79,
601 	/**
602 	 * The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.  (Since: 1.11)
603 	 */
604 	DOCUMENT_FRAME = 80,
605 	/**
606 	 * The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
607 	 */
608 	HEADING = 81,
609 	/**
610 	 * The object is a containing instance which encapsulates a page of information. @ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model.  (Since: 1.11)
611 	 */
612 	PAGE = 82,
613 	/**
614 	 * The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. (Since: 1.11)
615 	 */
616 	SECTION = 83,
617 	/**
618 	 * The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons.  Objects of this role should normally be ignored by clients. (Since: 1.11)
619 	 */
620 	REDUNDANT_OBJECT = 84,
621 	/**
622 	 * The object is a container for form controls, for instance as part of a
623 	 * web form or user-input form within a document.  This role is primarily a tag/convenience for
624 	 * clients when navigating complex documents, it is not expected that ordinary GUI containers will
625 	 * always have ATK_ROLE_FORM. (Since: 1.12.0)
626 	 */
627 	FORM = 85,
628 	/**
629 	 * The object is a hypertext anchor, i.e. a "link" in a
630 	 * hypertext document.  Such objects are distinct from 'inline'
631 	 * content which may also use the Hypertext/Hyperlink interfaces
632 	 * to indicate the range/location within a text object where
633 	 * an inline or embedded object lies.  (Since: 1.12.1)
634 	 */
635 	LINK = 86,
636 	/**
637 	 * The object is a window or similar viewport
638 	 * which is used to allow composition or input of a 'complex character',
639 	 * in other words it is an "input method window." (Since: 1.12.1)
640 	 */
641 	INPUT_METHOD_WINDOW = 87,
642 	/**
643 	 * A row in a table.  (Since: 2.1.0)
644 	 */
645 	TABLE_ROW = 88,
646 	/**
647 	 * An object that represents an element of a tree.  (Since: 2.1.0)
648 	 */
649 	TREE_ITEM = 89,
650 	/**
651 	 * A document frame which contains a spreadsheet.  (Since: 2.1.0)
652 	 */
653 	DOCUMENT_SPREADSHEET = 90,
654 	/**
655 	 * A document frame which contains a presentation or slide content.  (Since: 2.1.0)
656 	 */
657 	DOCUMENT_PRESENTATION = 91,
658 	/**
659 	 * A document frame which contains textual content, such as found in a word processing application.  (Since: 2.1.0)
660 	 */
661 	DOCUMENT_TEXT = 92,
662 	/**
663 	 * A document frame which contains HTML or other markup suitable for display in a web browser.  (Since: 2.1.0)
664 	 */
665 	DOCUMENT_WEB = 93,
666 	/**
667 	 * A document frame which contains email content to be displayed or composed either in plain text or HTML.  (Since: 2.1.0)
668 	 */
669 	DOCUMENT_EMAIL = 94,
670 	/**
671 	 * An object found within a document and designed to present a comment, note, or other annotation. In some cases, this object might not be visible until activated.  (Since: 2.1.0)
672 	 */
673 	COMMENT = 95,
674 	/**
675 	 * A non-collapsible list of choices the user can select from. (Since: 2.1.0)
676 	 */
677 	LIST_BOX = 96,
678 	/**
679 	 * A group of related widgets. This group typically has a label. (Since: 2.1.0)
680 	 */
681 	GROUPING = 97,
682 	/**
683 	 * An image map object. Usually a graphic with multiple hotspots, where each hotspot can be activated resulting in the loading of another document or section of a document. (Since: 2.1.0)
684 	 */
685 	IMAGE_MAP = 98,
686 	/**
687 	 * A transitory object designed to present a message to the user, typically at the desktop level rather than inside a particular application.  (Since: 2.1.0)
688 	 */
689 	NOTIFICATION = 99,
690 	/**
691 	 * An object designed to present a message to the user within an existing window. (Since: 2.1.0)
692 	 */
693 	INFO_BAR = 100,
694 	/**
695 	 * A bar that serves as a level indicator to, for instance, show the strength of a password or the state of a battery.  (Since: 2.7.3)
696 	 */
697 	LEVEL_BAR = 101,
698 	/**
699 	 * A bar that serves as the title of a window or a
700 	 * dialog. (Since: 2.12)
701 	 */
702 	TITLE_BAR = 102,
703 	/**
704 	 * An object which contains a text section
705 	 * that is quoted from another source. (Since: 2.12)
706 	 */
707 	BLOCK_QUOTE = 103,
708 	/**
709 	 * An object which represents an audio element. (Since: 2.12)
710 	 */
711 	AUDIO = 104,
712 	/**
713 	 * An object which represents a video element. (Since: 2.12)
714 	 */
715 	VIDEO = 105,
716 	/**
717 	 * A definition of a term or concept. (Since: 2.12)
718 	 */
719 	DEFINITION = 106,
720 	/**
721 	 * A section of a page that consists of a
722 	 * composition that forms an independent part of a document, page, or
723 	 * site. Examples: A blog entry, a news story, a forum post. (Since: 2.12)
724 	 */
725 	ARTICLE = 107,
726 	/**
727 	 * A region of a web page intended as a
728 	 * navigational landmark. This is designed to allow Assistive
729 	 * Technologies to provide quick navigation among key regions within a
730 	 * document. (Since: 2.12)
731 	 */
732 	LANDMARK = 108,
733 	/**
734 	 * A text widget or container holding log content, such
735 	 * as chat history and error logs. In this role there is a
736 	 * relationship between the arrival of new items in the log and the
737 	 * reading order. The log contains a meaningful sequence and new
738 	 * information is added only to the end of the log, not at arbitrary
739 	 * points. (Since: 2.12)
740 	 */
741 	LOG = 109,
742 	/**
743 	 * A container where non-essential information
744 	 * changes frequently. Common usages of marquee include stock tickers
745 	 * and ad banners. The primary difference between a marquee and a log
746 	 * is that logs usually have a meaningful order or sequence of
747 	 * important content changes. (Since: 2.12)
748 	 */
749 	MARQUEE = 110,
750 	/**
751 	 * A text widget or container that holds a mathematical
752 	 * expression. (Since: 2.12)
753 	 */
754 	MATH = 111,
755 	/**
756 	 * A widget whose purpose is to display a rating,
757 	 * such as the number of stars associated with a song in a media
758 	 * player. Objects of this role should also implement
759 	 * AtkValue. (Since: 2.12)
760 	 */
761 	RATING = 112,
762 	/**
763 	 * An object containing a numerical counter which
764 	 * indicates an amount of elapsed time from a start point, or the time
765 	 * remaining until an end point. (Since: 2.12)
766 	 */
767 	TIMER = 113,
768 	/**
769 	 * An object that represents a list of
770 	 * term-value groups. A term-value group represents a individual
771 	 * description and consist of one or more names
772 	 * (ATK_ROLE_DESCRIPTION_TERM) followed by one or more values
773 	 * (ATK_ROLE_DESCRIPTION_VALUE). For each list, there should not be
774 	 * more than one group with the same term name. (Since: 2.12)
775 	 */
776 	DESCRIPTION_LIST = 114,
777 	/**
778 	 * An object that represents a term or phrase
779 	 * with a corresponding definition. (Since: 2.12)
780 	 */
781 	DESCRIPTION_TERM = 115,
782 	/**
783 	 * An object that represents the
784 	 * description, definition or value of a term. (Since: 2.12)
785 	 */
786 	DESCRIPTION_VALUE = 116,
787 	/**
788 	 * A generic non-container object whose purpose is to display a
789 	 * brief amount of information to the user and whose role is known by the
790 	 * implementor but lacks semantic value for the user. Examples in which
791 	 * %ATK_ROLE_STATIC is appropriate include the message displayed in a message box
792 	 * and an image used as an alternative means to display text. %ATK_ROLE_STATIC
793 	 * should not be applied to widgets which are traditionally interactive, objects
794 	 * which display a significant amount of content, or any object which has an
795 	 * accessible relation pointing to another object. Implementors should expose the
796 	 * displayed information through the accessible name of the object. If doing so seems
797 	 * inappropriate, it may indicate that a different role should be used. For
798 	 * labels which describe another widget, see %ATK_ROLE_LABEL. For text views, see
799 	 * %ATK_ROLE_TEXT. For generic containers, see %ATK_ROLE_PANEL. For objects whose
800 	 * role is not known by the implementor, see %ATK_ROLE_UNKNOWN. (Since: 2.16)
801 	 */
802 	STATIC = 117,
803 	/**
804 	 * An object that represents a mathematical fraction.
805 	 * (Since: 2.16)
806 	 */
807 	MATH_FRACTION = 118,
808 	/**
809 	 * An object that represents a mathematical expression
810 	 * displayed with a radical. (Since: 2.16)
811 	 */
812 	MATH_ROOT = 119,
813 	/**
814 	 * An object that contains text that is displayed as a
815 	 * subscript. (Since: 2.16)
816 	 */
817 	SUBSCRIPT = 120,
818 	/**
819 	 * An object that contains text that is displayed as a
820 	 * superscript. (Since: 2.16)
821 	 */
822 	SUPERSCRIPT = 121,
823 	/**
824 	 * An object that contains the text of a footnote. (Since: 2.26)
825 	 */
826 	FOOTNOTE = 122,
827 	/**
828 	 * Content previously deleted or proposed to be
829 	 * deleted, e.g. in revision history or a content view providing suggestions
830 	 * from reviewers. (Since: 2.34)
831 	 */
832 	CONTENT_DELETION = 123,
833 	/**
834 	 * Content previously inserted or proposed to be
835 	 * inserted, e.g. in revision history or a content view providing suggestions
836 	 * from reviewers. (Since: 2.34)
837 	 */
838 	CONTENT_INSERTION = 124,
839 	/**
840 	 * A run of content that is marked or highlighted, such as for
841 	 * reference purposes, or to call it out as having a special purpose. If the
842 	 * marked content has an associated section in the document elaborating on the
843 	 * reason for the mark, then %ATK_RELATION_DETAILS should be used on the mark
844 	 * to point to that associated section. In addition, the reciprocal relation
845 	 * %ATK_RELATION_DETAILS_FOR should be used on the associated content section
846 	 * to point back to the mark. (Since: 2.36)
847 	 */
848 	MARK = 125,
849 	/**
850 	 * A container for content that is called out as a proposed
851 	 * change from the current version of the document, such as by a reviewer of the
852 	 * content. This role should include either %ATK_ROLE_CONTENT_DELETION and/or
853 	 * %ATK_ROLE_CONTENT_INSERTION children, in any order, to indicate what the
854 	 * actual change is. (Since: 2.36)
855 	 */
856 	SUGGESTION = 126,
857 	/**
858 	 * not a valid role, used for finding end of the enumeration
859 	 */
860 	LAST_DEFINED = 127,
861 }
862 alias AtkRole Role;
863 
864 /**
865  * Specifies where an object should be placed on the screen when using scroll_to.
866  *
867  * Since: 2.30
868  */
869 public enum AtkScrollType
870 {
871 	/**
872 	 * Scroll the object vertically and horizontally to bring
873 	 * its top left corner to the top left corner of the window.
874 	 */
875 	TOP_LEFT = 0,
876 	/**
877 	 * Scroll the object vertically and horizontally to
878 	 * bring its bottom right corner to the bottom right corner of the window.
879 	 */
880 	BOTTOM_RIGHT = 1,
881 	/**
882 	 * Scroll the object vertically to bring its top edge to
883 	 * the top edge of the window.
884 	 */
885 	TOP_EDGE = 2,
886 	/**
887 	 * Scroll the object vertically to bring its bottom
888 	 * edge to the bottom edge of the window.
889 	 */
890 	BOTTOM_EDGE = 3,
891 	/**
892 	 * Scroll the object vertically and horizontally to bring
893 	 * its left edge to the left edge of the window.
894 	 */
895 	LEFT_EDGE = 4,
896 	/**
897 	 * Scroll the object vertically and horizontally to
898 	 * bring its right edge to the right edge of the window.
899 	 */
900 	RIGHT_EDGE = 5,
901 	/**
902 	 * Scroll the object vertically and horizontally so that
903 	 * as much as possible of the object becomes visible. The exact placement is
904 	 * determined by the application.
905 	 */
906 	ANYWHERE = 6,
907 }
908 alias AtkScrollType ScrollType;
909 
910 /**
911  * The possible types of states of an object
912  */
913 public enum AtkStateType
914 {
915 	/**
916 	 * Indicates an invalid state - probably an error condition.
917 	 */
918 	INVALID = 0,
919 	/**
920 	 * Indicates a window is currently the active window, or an object is the active subelement within a container or table. ATK_STATE_ACTIVE should not be used for objects which have ATK_STATE_FOCUSABLE or ATK_STATE_SELECTABLE: Those objects should use ATK_STATE_FOCUSED and ATK_STATE_SELECTED respectively. ATK_STATE_ACTIVE is a means to indicate that an object which is not focusable and not selectable is the currently-active item within its parent container.
921 	 */
922 	ACTIVE = 1,
923 	/**
924 	 * Indicates that the object is 'armed', i.e. will be activated by if a pointer button-release event occurs within its bounds.  Buttons often enter this state when a pointer click occurs within their bounds, as a precursor to activation. ATK_STATE_ARMED has been deprecated since ATK-2.16 and should not be used in newly-written code.
925 	 */
926 	ARMED = 2,
927 	/**
928 	 * Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or the object is temporarily unavailable for interaction due to activity already in progress.  This state may be used by implementors of Document to indicate that content loading is underway.  It also may indicate other 'pending' conditions; clients may wish to interrogate this object when the ATK_STATE_BUSY flag is removed.
929 	 */
930 	BUSY = 3,
931 	/**
932 	 * Indicates this object is currently checked, for instance a checkbox is 'non-empty'.
933 	 */
934 	CHECKED = 4,
935 	/**
936 	 * Indicates that this object no longer has a valid backing widget (for instance, if its peer object has been destroyed)
937 	 */
938 	DEFUNCT = 5,
939 	/**
940 	 * Indicates that this object can contain text, and that the
941 	 * user can change the textual contents of this object by editing those contents
942 	 * directly. For an object which is expected to be editable due to its type, but
943 	 * which cannot be edited due to the application or platform preventing the user
944 	 * from doing so, that object's #AtkStateSet should lack ATK_STATE_EDITABLE and
945 	 * should contain ATK_STATE_READ_ONLY.
946 	 */
947 	EDITABLE = 6,
948 	/**
949 	 * Indicates that this object is enabled, i.e. that it currently reflects some application state. Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user interaction cannot cause them to acquire STATE_ENABLED. See also: ATK_STATE_SENSITIVE
950 	 */
951 	ENABLED = 7,
952 	/**
953 	 * Indicates this object allows progressive disclosure of its children
954 	 */
955 	EXPANDABLE = 8,
956 	/**
957 	 * Indicates this object its expanded - see ATK_STATE_EXPANDABLE above
958 	 */
959 	EXPANDED = 9,
960 	/**
961 	 * Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus
962 	 */
963 	FOCUSABLE = 10,
964 	/**
965 	 * Indicates this object currently has the keyboard focus
966 	 */
967 	FOCUSED = 11,
968 	/**
969 	 * Indicates the orientation of this object is horizontal; used, for instance, by objects of ATK_ROLE_SCROLL_BAR.  For objects where vertical/horizontal orientation is especially meaningful.
970 	 */
971 	HORIZONTAL = 12,
972 	/**
973 	 * Indicates this object is minimized and is represented only by an icon
974 	 */
975 	ICONIFIED = 13,
976 	/**
977 	 * Indicates something must be done with this object before the user can interact with an object in a different window
978 	 */
979 	MODAL = 14,
980 	/**
981 	 * Indicates this (text) object can contain multiple lines of text
982 	 */
983 	MULTI_LINE = 15,
984 	/**
985 	 * Indicates this object allows more than one of its children to be selected at the same time, or in the case of text objects, that the object supports non-contiguous text selections.
986 	 */
987 	MULTISELECTABLE = 16,
988 	/**
989 	 * Indicates this object paints every pixel within its rectangular region.
990 	 */
991 	OPAQUE = 17,
992 	/**
993 	 * Indicates this object is currently pressed.
994 	 */
995 	PRESSED = 18,
996 	/**
997 	 * Indicates the size of this object is not fixed
998 	 */
999 	RESIZABLE = 19,
1000 	/**
1001 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that can be selected
1002 	 */
1003 	SELECTABLE = 20,
1004 	/**
1005 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that has been selected
1006 	 */
1007 	SELECTED = 21,
1008 	/**
1009 	 * Indicates this object is sensitive, e.g. to user interaction.
1010 	 * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
1011 	 * but may be found in the absence of STATE_ENABLED if the current visible state of the
1012 	 * control is "disconnected" from the application state.  In such cases, direct user interaction
1013 	 * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes
1014 	 * an explicit selection using an object whose current state is ambiguous or undefined.
1015 	 * @see STATE_ENABLED, STATE_INDETERMINATE.
1016 	 */
1017 	SENSITIVE = 22,
1018 	/**
1019 	 * Indicates this object, the object's parent, the object's parent's parent, and so on,
1020 	 * are all 'shown' to the end-user, i.e. subject to "exposure" if blocking or obscuring objects do not interpose
1021 	 * between this object and the top of the window stack.
1022 	 */
1023 	SHOWING = 23,
1024 	/**
1025 	 * Indicates this (text) object can contain only a single line of text
1026 	 */
1027 	SINGLE_LINE = 24,
1028 	/**
1029 	 * Indicates that the information returned for this object may no longer be
1030 	 * synchronized with the application state.  This is implied if the object has STATE_TRANSIENT,
1031 	 * and can also occur towards the end of the object peer's lifecycle. It can also be used to indicate that
1032 	 * the index associated with this object has changed since the user accessed the object (in lieu of
1033 	 * "index-in-parent-changed" events).
1034 	 */
1035 	STALE = 25,
1036 	/**
1037 	 * Indicates this object is transient, i.e. a snapshot which may not emit events when its
1038 	 * state changes.  Data from objects with ATK_STATE_TRANSIENT should not be cached, since there may be no
1039 	 * notification given when the cached data becomes obsolete.
1040 	 */
1041 	TRANSIENT = 26,
1042 	/**
1043 	 * Indicates the orientation of this object is vertical
1044 	 */
1045 	VERTICAL = 27,
1046 	/**
1047 	 * Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
1048 	 * **note**: %ATK_STATE_VISIBLE is no guarantee that the object is actually unobscured on the screen, only
1049 	 * that it is 'potentially' visible, barring obstruction, being scrolled or clipped out of the
1050 	 * field of view, or having an ancestor container that has not yet made visible.
1051 	 * A widget is potentially onscreen if it has both %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING.
1052 	 * The absence of %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING is semantically equivalent to saying
1053 	 * that an object is 'hidden'.  See also %ATK_STATE_TRUNCATED, which applies if an object with
1054 	 * %ATK_STATE_VISIBLE and %ATK_STATE_SHOWING set lies within a viewport which means that its
1055 	 * contents are clipped, e.g. a truncated spreadsheet cell or
1056 	 * an image within a scrolling viewport.  Mostly useful for screen-review and magnification
1057 	 * algorithms.
1058 	 */
1059 	VISIBLE = 28,
1060 	/**
1061 	 * Indicates that "active-descendant-changed" event
1062 	 * is sent when children become 'active' (i.e. are selected or navigated to onscreen).
1063 	 * Used to prevent need to enumerate all children in very large containers, like tables.
1064 	 * The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
1065 	 * that the children should not, and need not, be enumerated by the client.
1066 	 * Objects implementing this state are expected to provide relevant state
1067 	 * notifications to listening clients, for instance notifications of visibility
1068 	 * changes and activation of their contained child objects, without the client
1069 	 * having previously requested references to those children.
1070 	 */
1071 	MANAGES_DESCENDANTS = 29,
1072 	/**
1073 	 * Indicates that the value, or some other quantifiable
1074 	 * property, of this AtkObject cannot be fully determined. In the case of a large
1075 	 * data set in which the total number of items in that set is unknown (e.g. 1 of
1076 	 * 999+), implementors should expose the currently-known set size (999) along
1077 	 * with this state. In the case of a check box, this state should be used to
1078 	 * indicate that the check box is a tri-state check box which is currently
1079 	 * neither checked nor unchecked.
1080 	 */
1081 	INDETERMINATE = 30,
1082 	/**
1083 	 * Indicates that an object is truncated, e.g. a text value in a speradsheet cell.
1084 	 */
1085 	TRUNCATED = 31,
1086 	/**
1087 	 * Indicates that explicit user interaction with an object is required by the user interface, e.g. a required field in a "web-form" interface.
1088 	 */
1089 	REQUIRED = 32,
1090 	/**
1091 	 * Indicates that the object has encountered an error condition due to failure of input validation. For instance, a form control may acquire this state in response to invalid or malformed user input.
1092 	 */
1093 	INVALID_ENTRY = 33,
1094 	/**
1095 	 * Indicates that the object in question implements some form of ¨typeahead¨ or
1096 	 * pre-selection behavior whereby entering the first character of one or more sub-elements
1097 	 * causes those elements to scroll into view or become selected.  Subsequent character input
1098 	 * may narrow the selection further as long as one or more sub-elements match the string.
1099 	 * This state is normally only useful and encountered on objects that implement Selection.
1100 	 * In some cases the typeahead behavior may result in full or partial ¨completion¨ of
1101 	 * the data in the input field, in which case these input events may trigger text-changed
1102 	 * events from the AtkText interface.  This state supplants @ATK_ROLE_AUTOCOMPLETE.
1103 	 */
1104 	SUPPORTS_AUTOCOMPLETION = 34,
1105 	/**
1106 	 * Indicates that the object in question supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from @ATK_STATE_SELECTABLE, which infers that the object in question is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations.
1107 	 */
1108 	SELECTABLE_TEXT = 35,
1109 	/**
1110 	 * Indicates that the object is the "default" active component, i.e. the object which is activated by an end-user press of the "Enter" or "Return" key.  Typically a "close" or "submit" button.
1111 	 */
1112 	DEFAULT = 36,
1113 	/**
1114 	 * Indicates that the object changes its appearance dynamically as an inherent part of its presentation.  This state may come and go if an object is only temporarily animated on the way to a 'final' onscreen presentation.
1115 	 * **note**: some applications, notably content viewers, may not be able to detect
1116 	 * all kinds of animated content.  Therefore the absence of this state should not
1117 	 * be taken as definitive evidence that the object's visual representation is
1118 	 * static; this state is advisory.
1119 	 */
1120 	ANIMATED = 37,
1121 	/**
1122 	 * Indicates that the object (typically a hyperlink) has already been 'activated', and/or its backing data has already been downloaded, rendered, or otherwise "visited".
1123 	 */
1124 	VISITED = 38,
1125 	/**
1126 	 * Indicates this object has the potential to be
1127 	 * checked, such as a checkbox or toggle-able table cell. @Since:
1128 	 * ATK-2.12
1129 	 */
1130 	CHECKABLE = 39,
1131 	/**
1132 	 * Indicates that the object has a popup context
1133 	 * menu or sub-level menu which may or may not be showing. This means
1134 	 * that activation renders conditional content.  Note that ordinary
1135 	 * tooltips are not considered popups in this context. @Since: ATK-2.12
1136 	 */
1137 	HAS_POPUP = 40,
1138 	/**
1139 	 * Indicates this object has a tooltip. @Since: ATK-2.16
1140 	 */
1141 	HAS_TOOLTIP = 41,
1142 	/**
1143 	 * Indicates that a widget which is ENABLED and SENSITIVE
1144 	 * has a value which can be read, but not modified, by the user. Note that this
1145 	 * state should only be applied to widget types whose value is normally directly
1146 	 * user modifiable, such as check boxes, radio buttons, spin buttons, text input
1147 	 * fields, and combo boxes, as a means to convey that the expected interaction
1148 	 * with that widget is not possible. When the expected interaction with a
1149 	 * widget does not include modification by the user, as is the case with
1150 	 * labels and containers, ATK_STATE_READ_ONLY should not be applied. See also
1151 	 * ATK_STATE_EDITABLE. @Since: ATK-2-16
1152 	 */
1153 	READ_ONLY = 42,
1154 	/**
1155 	 * Indicates this object is collapsed. @Since: ATK-2.38
1156 	 */
1157 	COLLAPSED = 43,
1158 	/**
1159 	 * Not a valid state, used for finding end of enumeration
1160 	 */
1161 	LAST_DEFINED = 44,
1162 }
1163 alias AtkStateType StateType;
1164 
1165 /**
1166  * Describes the text attributes supported
1167  */
1168 public enum AtkTextAttribute
1169 {
1170 	/**
1171 	 * Invalid attribute, like bad spelling or grammar.
1172 	 */
1173 	INVALID = 0,
1174 	/**
1175 	 * The pixel width of the left margin
1176 	 */
1177 	LEFT_MARGIN = 1,
1178 	/**
1179 	 * The pixel width of the right margin
1180 	 */
1181 	RIGHT_MARGIN = 2,
1182 	/**
1183 	 * The number of pixels that the text is indented
1184 	 */
1185 	INDENT = 3,
1186 	/**
1187 	 * Either "true" or "false" indicating whether text is visible or not
1188 	 */
1189 	INVISIBLE = 4,
1190 	/**
1191 	 * Either "true" or "false" indicating whether text is editable or not
1192 	 */
1193 	EDITABLE = 5,
1194 	/**
1195 	 * Pixels of blank space to leave above each newline-terminated line.
1196 	 */
1197 	PIXELS_ABOVE_LINES = 6,
1198 	/**
1199 	 * Pixels of blank space to leave below each newline-terminated line.
1200 	 */
1201 	PIXELS_BELOW_LINES = 7,
1202 	/**
1203 	 * Pixels of blank space to leave between wrapped lines inside the same newline-terminated line (paragraph).
1204 	 */
1205 	PIXELS_INSIDE_WRAP = 8,
1206 	/**
1207 	 * "true" or "false" whether to make the background color for each character the height of the highest font used on the current line, or the height of the font used for the current character.
1208 	 */
1209 	BG_FULL_HEIGHT = 9,
1210 	/**
1211 	 * Number of pixels that the characters are risen above the baseline. See also ATK_TEXT_ATTR_TEXT_POSITION.
1212 	 */
1213 	RISE = 10,
1214 	/**
1215 	 * "none", "single", "double", "low", or "error"
1216 	 */
1217 	UNDERLINE = 11,
1218 	/**
1219 	 * "true" or "false" whether the text is strikethrough
1220 	 */
1221 	STRIKETHROUGH = 12,
1222 	/**
1223 	 * The size of the characters in points. eg: 10
1224 	 */
1225 	SIZE = 13,
1226 	/**
1227 	 * The scale of the characters. The value is a string representation of a double
1228 	 */
1229 	SCALE = 14,
1230 	/**
1231 	 * The weight of the characters.
1232 	 */
1233 	WEIGHT = 15,
1234 	/**
1235 	 * The language used
1236 	 */
1237 	LANGUAGE = 16,
1238 	/**
1239 	 * The font family name
1240 	 */
1241 	FAMILY_NAME = 17,
1242 	/**
1243 	 * The background color. The value is an RGB value of the format "%u,%u,%u"
1244 	 */
1245 	BG_COLOR = 18,
1246 	/**
1247 	 * The foreground color. The value is an RGB value of the format "%u,%u,%u"
1248 	 */
1249 	FG_COLOR = 19,
1250 	/**
1251 	 * "true" if a #GdkBitmap is set for stippling the background color.
1252 	 */
1253 	BG_STIPPLE = 20,
1254 	/**
1255 	 * "true" if a #GdkBitmap is set for stippling the foreground color.
1256 	 */
1257 	FG_STIPPLE = 21,
1258 	/**
1259 	 * The wrap mode of the text, if any. Values are "none", "char", "word", or "word_char".
1260 	 */
1261 	WRAP_MODE = 22,
1262 	/**
1263 	 * The direction of the text, if set. Values are "none", "ltr" or "rtl"
1264 	 */
1265 	DIRECTION = 23,
1266 	/**
1267 	 * The justification of the text, if set. Values are "left", "right", "center" or "fill"
1268 	 */
1269 	JUSTIFICATION = 24,
1270 	/**
1271 	 * The stretch of the text, if set. Values are "ultra_condensed", "extra_condensed", "condensed", "semi_condensed", "normal", "semi_expanded", "expanded", "extra_expanded" or "ultra_expanded"
1272 	 */
1273 	STRETCH = 25,
1274 	/**
1275 	 * The capitalization variant of the text, if set. Values are "normal" or "small_caps"
1276 	 */
1277 	VARIANT = 26,
1278 	/**
1279 	 * The slant style of the text, if set. Values are "normal", "oblique" or "italic"
1280 	 */
1281 	STYLE = 27,
1282 	/**
1283 	 * The vertical position with respect to the baseline. Values are "baseline", "super", or "sub". Note that a super or sub text attribute refers to position with respect to the baseline of the prior character.
1284 	 */
1285 	TEXT_POSITION = 28,
1286 	/**
1287 	 * not a valid text attribute, used for finding end of enumeration
1288 	 */
1289 	LAST_DEFINED = 29,
1290 }
1291 alias AtkTextAttribute TextAttribute;
1292 
1293 /**
1294  * Text boundary types used for specifying boundaries for regions of text.
1295  * This enumeration is deprecated since 2.9.4 and should not be used. Use
1296  * AtkTextGranularity with #atk_text_get_string_at_offset instead.
1297  */
1298 public enum AtkTextBoundary
1299 {
1300 	/**
1301 	 * Boundary is the boundary between characters
1302 	 * (including non-printing characters)
1303 	 */
1304 	CHAR = 0,
1305 	/**
1306 	 * Boundary is the start (i.e. first character) of a word.
1307 	 */
1308 	WORD_START = 1,
1309 	/**
1310 	 * Boundary is the end (i.e. last
1311 	 * character) of a word.
1312 	 */
1313 	WORD_END = 2,
1314 	/**
1315 	 * Boundary is the first character in a sentence.
1316 	 */
1317 	SENTENCE_START = 3,
1318 	/**
1319 	 * Boundary is the last (terminal)
1320 	 * character in a sentence; in languages which use "sentence stop"
1321 	 * punctuation such as English, the boundary is thus the '.', '?', or
1322 	 * similar terminal punctuation character.
1323 	 */
1324 	SENTENCE_END = 4,
1325 	/**
1326 	 * Boundary is the initial character of the content or a
1327 	 * character immediately following a newline, linefeed, or return character.
1328 	 */
1329 	LINE_START = 5,
1330 	/**
1331 	 * Boundary is the linefeed, or return
1332 	 * character.
1333 	 */
1334 	LINE_END = 6,
1335 }
1336 alias AtkTextBoundary TextBoundary;
1337 
1338 /**
1339  * Describes the type of clipping required.
1340  */
1341 public enum AtkTextClipType
1342 {
1343 	/**
1344 	 * No clipping to be done
1345 	 */
1346 	NONE = 0,
1347 	/**
1348 	 * Text clipped by min coordinate is omitted
1349 	 */
1350 	MIN = 1,
1351 	/**
1352 	 * Text clipped by max coordinate is omitted
1353 	 */
1354 	MAX = 2,
1355 	/**
1356 	 * Only text fully within mix/max bound is retained
1357 	 */
1358 	BOTH = 3,
1359 }
1360 alias AtkTextClipType TextClipType;
1361 
1362 /**
1363  * Text granularity types used for specifying the granularity of the region of
1364  * text we are interested in.
1365  */
1366 public enum AtkTextGranularity
1367 {
1368 	/**
1369 	 * Granularity is defined by the boundaries between characters
1370 	 * (including non-printing characters)
1371 	 */
1372 	CHAR = 0,
1373 	/**
1374 	 * Granularity is defined by the boundaries of a word,
1375 	 * starting at the beginning of the current word and finishing at the beginning of
1376 	 * the following one, if present.
1377 	 */
1378 	WORD = 1,
1379 	/**
1380 	 * Granularity is defined by the boundaries of a sentence,
1381 	 * starting at the beginning of the current sentence and finishing at the beginning of
1382 	 * the following one, if present.
1383 	 */
1384 	SENTENCE = 2,
1385 	/**
1386 	 * Granularity is defined by the boundaries of a line,
1387 	 * starting at the beginning of the current line and finishing at the beginning of
1388 	 * the following one, if present.
1389 	 */
1390 	LINE = 3,
1391 	/**
1392 	 * Granularity is defined by the boundaries of a paragraph,
1393 	 * starting at the beginning of the current paragraph and finishing at the beginning of
1394 	 * the following one, if present.
1395 	 */
1396 	PARAGRAPH = 4,
1397 }
1398 alias AtkTextGranularity TextGranularity;
1399 
1400 /**
1401  * Default types for a given value. Those are defined in order to
1402  * easily get localized strings to describe a given value or a given
1403  * subrange, using atk_value_type_get_localized_name().
1404  */
1405 public enum AtkValueType
1406 {
1407 	VERY_WEAK = 0,
1408 	WEAK = 1,
1409 	ACCEPTABLE = 2,
1410 	STRONG = 3,
1411 	VERY_STRONG = 4,
1412 	VERY_LOW = 5,
1413 	LOW = 6,
1414 	MEDIUM = 7,
1415 	HIGH = 8,
1416 	VERY_HIGH = 9,
1417 	VERY_BAD = 10,
1418 	BAD = 11,
1419 	GOOD = 12,
1420 	VERY_GOOD = 13,
1421 	BEST = 14,
1422 	LAST_DEFINED = 15,
1423 }
1424 alias AtkValueType ValueType;
1425 
1426 struct AtkAction;
1427 
1428 /**
1429  * The #AtkAction interface should be supported by any object that can
1430  * perform one or more actions. The interface provides the standard
1431  * mechanism for an assistive technology to determine what those actions
1432  * are as well as tell the object to perform them. Any object that can
1433  * be manipulated should support this interface.
1434  */
1435 struct AtkActionIface
1436 {
1437 	GTypeInterface parent;
1438 	/**
1439 	 *
1440 	 * Params:
1441 	 *     action = a #GObject instance that implements AtkActionIface
1442 	 *     i = the action index corresponding to the action to be performed
1443 	 * Returns: %TRUE if success, %FALSE otherwise
1444 	 */
1445 	extern(C) int function(AtkAction* action, int i) doAction;
1446 	/**
1447 	 *
1448 	 * Params:
1449 	 *     action = a #GObject instance that implements AtkActionIface
1450 	 * Returns: a the number of actions, or 0 if @action does not
1451 	 *     implement this interface.
1452 	 */
1453 	extern(C) int function(AtkAction* action) getNActions;
1454 	/**
1455 	 *
1456 	 * Params:
1457 	 *     action = a #GObject instance that implements AtkActionIface
1458 	 *     i = the action index corresponding to the action to be performed
1459 	 * Returns: a description string, or %NULL if @action does
1460 	 *     not implement this interface.
1461 	 */
1462 	extern(C) const(char)* function(AtkAction* action, int i) getDescription;
1463 	/**
1464 	 *
1465 	 * Params:
1466 	 *     action = a #GObject instance that implements AtkActionIface
1467 	 *     i = the action index corresponding to the action to be performed
1468 	 * Returns: a name string, or %NULL if @action does not
1469 	 *     implement this interface.
1470 	 */
1471 	extern(C) const(char)* function(AtkAction* action, int i) getName;
1472 	/**
1473 	 *
1474 	 * Params:
1475 	 *     action = a #GObject instance that implements AtkActionIface
1476 	 *     i = the action index corresponding to the action to be performed
1477 	 * Returns: the keybinding which can be used to activate
1478 	 *     this action, or %NULL if there is no keybinding for this action.
1479 	 */
1480 	extern(C) const(char)* function(AtkAction* action, int i) getKeybinding;
1481 	/**
1482 	 *
1483 	 * Params:
1484 	 *     action = a #GObject instance that implements AtkActionIface
1485 	 *     i = the action index corresponding to the action to be performed
1486 	 *     desc = the description to be assigned to this action
1487 	 * Returns: a gboolean representing if the description was successfully set;
1488 	 */
1489 	extern(C) int function(AtkAction* action, int i, const(char)* desc) setDescription;
1490 	/**
1491 	 *
1492 	 * Params:
1493 	 *     action = a #GObject instance that implements AtkActionIface
1494 	 *     i = the action index corresponding to the action to be performed
1495 	 * Returns: a name string, or %NULL if @action does not
1496 	 *     implement this interface.
1497 	 */
1498 	extern(C) const(char)* function(AtkAction* action, int i) getLocalizedName;
1499 }
1500 
1501 struct AtkComponent;
1502 
1503 /**
1504  * The AtkComponent interface should be supported by any object that is
1505  * rendered on the screen. The interface provides the standard mechanism
1506  * for an assistive technology to determine and set the graphical
1507  * representation of an object.
1508  */
1509 struct AtkComponentIface
1510 {
1511 	GTypeInterface parent;
1512 	/**
1513 	 *
1514 	 * Params:
1515 	 *     component = The #AtkComponent to attach the @handler to
1516 	 *     handler = The #AtkFocusHandler to be attached to @component
1517 	 * Returns: a handler id which can be used in atk_component_remove_focus_handler()
1518 	 *     or zero if the handler was already added.
1519 	 */
1520 	extern(C) uint function(AtkComponent* component, AtkFocusHandler handler) addFocusHandler;
1521 	/**
1522 	 *
1523 	 * Params:
1524 	 *     component = the #AtkComponent
1525 	 *     x = x coordinate
1526 	 *     y = y coordinate
1527 	 *     coordType = specifies whether the coordinates are relative to the screen
1528 	 *         or to the components top level window
1529 	 * Returns: %TRUE or %FALSE indicating whether the specified point is within
1530 	 *     the extent of the @component or not
1531 	 */
1532 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) contains;
1533 	/**
1534 	 *
1535 	 * Params:
1536 	 *     component = the #AtkComponent
1537 	 *     x = x coordinate
1538 	 *     y = y coordinate
1539 	 *     coordType = specifies whether the coordinates are relative to the screen
1540 	 *         or to the components top level window
1541 	 * Returns: a reference to the accessible
1542 	 *     child, if one exists
1543 	 */
1544 	extern(C) AtkObject* function(AtkComponent* component, int x, int y, AtkCoordType coordType) refAccessibleAtPoint;
1545 	/** */
1546 	extern(C) void function(AtkComponent* component, int* x, int* y, int* width, int* height, AtkCoordType coordType) getExtents;
1547 	/** */
1548 	extern(C) void function(AtkComponent* component, int* x, int* y, AtkCoordType coordType) getPosition;
1549 	/** */
1550 	extern(C) void function(AtkComponent* component, int* width, int* height) getSize;
1551 	/**
1552 	 *
1553 	 * Params:
1554 	 *     component = an #AtkComponent
1555 	 * Returns: %TRUE if successful, %FALSE otherwise.
1556 	 */
1557 	extern(C) int function(AtkComponent* component) grabFocus;
1558 	/** */
1559 	extern(C) void function(AtkComponent* component, uint handlerId) removeFocusHandler;
1560 	/**
1561 	 *
1562 	 * Params:
1563 	 *     component = an #AtkComponent
1564 	 *     x = x coordinate
1565 	 *     y = y coordinate
1566 	 *     width = width to set for @component
1567 	 *     height = height to set for @component
1568 	 *     coordType = specifies whether the coordinates are relative to the screen
1569 	 *         or to the components top level window
1570 	 * Returns: %TRUE or %FALSE whether the extents were set or not
1571 	 */
1572 	extern(C) int function(AtkComponent* component, int x, int y, int width, int height, AtkCoordType coordType) setExtents;
1573 	/**
1574 	 *
1575 	 * Params:
1576 	 *     component = an #AtkComponent
1577 	 *     x = x coordinate
1578 	 *     y = y coordinate
1579 	 *     coordType = specifies whether the coordinates are relative to the screen
1580 	 *         or to the component's top level window
1581 	 * Returns: %TRUE or %FALSE whether or not the position was set or not
1582 	 */
1583 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) setPosition;
1584 	/**
1585 	 *
1586 	 * Params:
1587 	 *     component = an #AtkComponent
1588 	 *     width = width to set for @component
1589 	 *     height = height to set for @component
1590 	 * Returns: %TRUE or %FALSE whether the size was set or not
1591 	 */
1592 	extern(C) int function(AtkComponent* component, int width, int height) setSize;
1593 	/**
1594 	 *
1595 	 * Params:
1596 	 *     component = an #AtkComponent
1597 	 * Returns: an #AtkLayer which is the layer of the component
1598 	 */
1599 	extern(C) AtkLayer function(AtkComponent* component) getLayer;
1600 	/**
1601 	 *
1602 	 * Params:
1603 	 *     component = an #AtkComponent
1604 	 * Returns: a gint which is the zorder of the component, i.e. the depth at
1605 	 *     which the component is shown in relation to other components in the same
1606 	 *     container.
1607 	 */
1608 	extern(C) int function(AtkComponent* component) getMdiZorder;
1609 	/** */
1610 	extern(C) void function(AtkComponent* component, AtkRectangle* bounds) boundsChanged;
1611 	/**
1612 	 *
1613 	 * Params:
1614 	 *     component = an #AtkComponent
1615 	 * Returns: An alpha value from 0 to 1.0, inclusive.
1616 	 */
1617 	extern(C) double function(AtkComponent* component) getAlpha;
1618 	/**
1619 	 *
1620 	 * Params:
1621 	 *     component = an #AtkComponent
1622 	 *     type = specify where the object should be made visible.
1623 	 * Returns: whether scrolling was successful.
1624 	 */
1625 	extern(C) int function(AtkComponent* component, AtkScrollType type) scrollTo;
1626 	/**
1627 	 *
1628 	 * Params:
1629 	 *     component = an #AtkComponent
1630 	 *     coords = specify whether coordinates are relative to the screen or to the
1631 	 *         parent object.
1632 	 *     x = x-position where to scroll to
1633 	 *     y = y-position where to scroll to
1634 	 * Returns: whether scrolling was successful.
1635 	 */
1636 	extern(C) int function(AtkComponent* component, AtkCoordType coords, int x, int y) scrollToPoint;
1637 }
1638 
1639 struct AtkDocument;
1640 
1641 struct AtkDocumentIface
1642 {
1643 	GTypeInterface parent;
1644 	/**
1645 	 *
1646 	 * Params:
1647 	 *     document = a #GObject instance that implements AtkDocumentIface
1648 	 * Returns: a string indicating the document type
1649 	 */
1650 	extern(C) const(char)* function(AtkDocument* document) getDocumentType;
1651 	/**
1652 	 *
1653 	 * Params:
1654 	 *     document = a #GObject instance that implements AtkDocumentIface
1655 	 * Returns: a %gpointer that points to an instance of the DOM.
1656 	 */
1657 	extern(C) void* function(AtkDocument* document) getDocument;
1658 	/**
1659 	 *
1660 	 * Params:
1661 	 *     document = a #GObject instance that implements AtkDocumentIface
1662 	 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
1663 	 *     locale of the document content as a whole, or NULL if
1664 	 *     the document content does not specify a locale.
1665 	 */
1666 	extern(C) const(char)* function(AtkDocument* document) getDocumentLocale;
1667 	/**
1668 	 *
1669 	 * Params:
1670 	 *     document = a #GObject instance that implements AtkDocumentIface
1671 	 * Returns: An AtkAttributeSet containing the explicitly
1672 	 *     set name-value-pair attributes associated with this document
1673 	 *     as a whole.
1674 	 */
1675 	extern(C) AtkAttributeSet* function(AtkDocument* document) getDocumentAttributes;
1676 	/**
1677 	 *
1678 	 * Params:
1679 	 *     document = a #GObject instance that implements AtkDocumentIface
1680 	 *     attributeName = a character string representing the name of the attribute
1681 	 *         whose value is being queried.
1682 	 * Returns: a string value associated with the named
1683 	 *     attribute for this document, or %NULL if a value for
1684 	 *     @attribute_name has not been specified for this document.
1685 	 */
1686 	extern(C) const(char)* function(AtkDocument* document, const(char)* attributeName) getDocumentAttributeValue;
1687 	/**
1688 	 *
1689 	 * Params:
1690 	 *     document = a #GObject instance that implements #AtkDocumentIface
1691 	 *     attributeName = a character string representing the name of the attribute
1692 	 *         whose value is being set.
1693 	 *     attributeValue = a string value to be associated with @attribute_name.
1694 	 * Returns: %TRUE if @attribute_value is successfully associated
1695 	 *     with @attribute_name for this @document, and %FALSE if if the
1696 	 *     document does not allow the attribute to be modified
1697 	 */
1698 	extern(C) int function(AtkDocument* document, const(char)* attributeName, const(char)* attributeValue) setDocumentAttribute;
1699 	/**
1700 	 *
1701 	 * Params:
1702 	 *     document = the #AtkDocument
1703 	 * Returns: the current page number inside @document, or -1 if
1704 	 *     not implemented, not know by the implementor, or irrelevant.
1705 	 */
1706 	extern(C) int function(AtkDocument* document) getCurrentPageNumber;
1707 	/**
1708 	 *
1709 	 * Params:
1710 	 *     document = the #AtkDocument
1711 	 * Returns: total page count of @document, or -1 if not implemented,
1712 	 *     not know by the implementor or irrelevant.
1713 	 */
1714 	extern(C) int function(AtkDocument* document) getPageCount;
1715 }
1716 
1717 struct AtkEditableText;
1718 
1719 struct AtkEditableTextIface
1720 {
1721 	GTypeInterface parentInterface;
1722 	/**
1723 	 *
1724 	 * Params:
1725 	 *     text = an #AtkEditableText
1726 	 *     attribSet = an #AtkAttributeSet
1727 	 *     startOffset = start of range in which to set attributes
1728 	 *     endOffset = end of range in which to set attributes
1729 	 * Returns: %TRUE if attributes successfully set for the specified
1730 	 *     range, otherwise %FALSE
1731 	 */
1732 	extern(C) int function(AtkEditableText* text, AtkAttributeSet* attribSet, int startOffset, int endOffset) setRunAttributes;
1733 	/** */
1734 	extern(C) void function(AtkEditableText* text, const(char)* string_) setTextContents;
1735 	/** */
1736 	extern(C) void function(AtkEditableText* text, const(char)* string_, int length, int* position) insertText;
1737 	/** */
1738 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) copyText;
1739 	/** */
1740 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) cutText;
1741 	/** */
1742 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) deleteText;
1743 	/** */
1744 	extern(C) void function(AtkEditableText* text, int position) pasteText;
1745 }
1746 
1747 struct AtkGObjectAccessible
1748 {
1749 	AtkObject parent;
1750 }
1751 
1752 struct AtkGObjectAccessibleClass
1753 {
1754 	AtkObjectClass parentClass;
1755 	AtkFunction pad1;
1756 	AtkFunction pad2;
1757 }
1758 
1759 struct AtkHyperlink
1760 {
1761 	GObject parent;
1762 }
1763 
1764 struct AtkHyperlinkClass
1765 {
1766 	GObjectClass parent;
1767 	/**
1768 	 *
1769 	 * Params:
1770 	 *     link = an #AtkHyperlink
1771 	 *     i = a (zero-index) integer specifying the desired anchor
1772 	 * Returns: a string specifying the URI
1773 	 */
1774 	extern(C) char* function(AtkHyperlink* link, int i) getUri;
1775 	/**
1776 	 *
1777 	 * Params:
1778 	 *     link = an #AtkHyperlink
1779 	 *     i = a (zero-index) integer specifying the desired anchor
1780 	 * Returns: an #AtkObject associated with this hyperlinks
1781 	 *     i-th anchor
1782 	 */
1783 	extern(C) AtkObject* function(AtkHyperlink* link, int i) getObject;
1784 	/**
1785 	 *
1786 	 * Params:
1787 	 *     link = an #AtkHyperlink
1788 	 * Returns: the index with the hypertext document at which this link ends
1789 	 */
1790 	extern(C) int function(AtkHyperlink* link) getEndIndex;
1791 	/**
1792 	 *
1793 	 * Params:
1794 	 *     link = an #AtkHyperlink
1795 	 * Returns: the index with the hypertext document at which this link begins
1796 	 */
1797 	extern(C) int function(AtkHyperlink* link) getStartIndex;
1798 	/**
1799 	 *
1800 	 * Params:
1801 	 *     link = an #AtkHyperlink
1802 	 * Returns: whether or not this link is still valid
1803 	 */
1804 	extern(C) int function(AtkHyperlink* link) isValid;
1805 	/**
1806 	 *
1807 	 * Params:
1808 	 *     link = an #AtkHyperlink
1809 	 * Returns: the number of anchors associated with this hyperlink
1810 	 */
1811 	extern(C) int function(AtkHyperlink* link) getNAnchors;
1812 	/** */
1813 	extern(C) uint function(AtkHyperlink* link) linkState;
1814 	/**
1815 	 *
1816 	 * Params:
1817 	 *     link = an #AtkHyperlink
1818 	 * Returns: True if the AtkHyperlink is selected, False otherwise
1819 	 */
1820 	extern(C) int function(AtkHyperlink* link) isSelectedLink;
1821 	/** */
1822 	extern(C) void function(AtkHyperlink* link) linkActivated;
1823 	AtkFunction pad1;
1824 }
1825 
1826 struct AtkHyperlinkImpl;
1827 
1828 struct AtkHyperlinkImplIface
1829 {
1830 	GTypeInterface parent;
1831 	/**
1832 	 *
1833 	 * Params:
1834 	 *     impl = a #GObject instance that implements AtkHyperlinkImplIface
1835 	 * Returns: an AtkHyperlink object which points to this
1836 	 *     implementing AtkObject.
1837 	 */
1838 	extern(C) AtkHyperlink* function(AtkHyperlinkImpl* impl) getHyperlink;
1839 }
1840 
1841 struct AtkHypertext;
1842 
1843 struct AtkHypertextIface
1844 {
1845 	GTypeInterface parent;
1846 	/**
1847 	 *
1848 	 * Params:
1849 	 *     hypertext = an #AtkHypertext
1850 	 *     linkIndex = an integer specifying the desired link
1851 	 * Returns: the link in this hypertext document at
1852 	 *     index @link_index
1853 	 */
1854 	extern(C) AtkHyperlink* function(AtkHypertext* hypertext, int linkIndex) getLink;
1855 	/**
1856 	 *
1857 	 * Params:
1858 	 *     hypertext = an #AtkHypertext
1859 	 * Returns: the number of links within this hypertext document
1860 	 */
1861 	extern(C) int function(AtkHypertext* hypertext) getNLinks;
1862 	/**
1863 	 *
1864 	 * Params:
1865 	 *     hypertext = an #AtkHypertext
1866 	 *     charIndex = a character index
1867 	 * Returns: an index into the array of hyperlinks in @hypertext,
1868 	 *     or -1 if there is no hyperlink associated with this character.
1869 	 */
1870 	extern(C) int function(AtkHypertext* hypertext, int charIndex) getLinkIndex;
1871 	/** */
1872 	extern(C) void function(AtkHypertext* hypertext, int linkIndex) linkSelected;
1873 }
1874 
1875 struct AtkImage;
1876 
1877 struct AtkImageIface
1878 {
1879 	GTypeInterface parent;
1880 	/** */
1881 	extern(C) void function(AtkImage* image, int* x, int* y, AtkCoordType coordType) getImagePosition;
1882 	/**
1883 	 *
1884 	 * Params:
1885 	 *     image = a #GObject instance that implements AtkImageIface
1886 	 * Returns: a string representing the image description
1887 	 */
1888 	extern(C) const(char)* function(AtkImage* image) getImageDescription;
1889 	/** */
1890 	extern(C) void function(AtkImage* image, int* width, int* height) getImageSize;
1891 	/**
1892 	 *
1893 	 * Params:
1894 	 *     image = a #GObject instance that implements AtkImageIface
1895 	 *     description = a string description to set for @image
1896 	 * Returns: boolean TRUE, or FALSE if operation could
1897 	 *     not be completed.
1898 	 */
1899 	extern(C) int function(AtkImage* image, const(char)* description) setImageDescription;
1900 	/**
1901 	 *
1902 	 * Params:
1903 	 *     image = An #AtkImage
1904 	 * Returns: a string corresponding to the POSIX
1905 	 *     `LC_MESSAGES` locale used by the image description, or
1906 	 *     %NULL if the image does not specify a locale.
1907 	 */
1908 	extern(C) const(char)* function(AtkImage* image) getImageLocale;
1909 }
1910 
1911 struct AtkImplementor;
1912 
1913 /**
1914  * Encapsulates information about a key event.
1915  */
1916 struct AtkKeyEventStruct
1917 {
1918 	/**
1919 	 * An AtkKeyEventType, generally one of ATK_KEY_EVENT_PRESS or ATK_KEY_EVENT_RELEASE
1920 	 */
1921 	int type;
1922 	/**
1923 	 * A bitmask representing the state of the modifier keys immediately after the event takes place.
1924 	 * The meaning of the bits is currently defined to match the bitmask used by GDK in
1925 	 * GdkEventType.state, see
1926 	 * http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
1927 	 */
1928 	uint state;
1929 	/**
1930 	 * A guint representing a keysym value corresponding to those used by GDK and X11: see
1931 	 * /usr/X11/include/keysymdef.h.
1932 	 */
1933 	uint keyval;
1934 	/**
1935 	 * The length of member #string.
1936 	 */
1937 	int length;
1938 	/**
1939 	 * A string containing one of the following: either a string approximating the text that would
1940 	 * result from this keypress, if the key is a control or graphic character, or a symbolic name for this keypress.
1941 	 * Alphanumeric and printable keys will have the symbolic key name in this string member, for instance "A". "0",
1942 	 * "semicolon", "aacute".  Keypad keys have the prefix "KP".
1943 	 */
1944 	char* string_;
1945 	/**
1946 	 * The raw hardware code that generated the key event.  This field is raraly useful.
1947 	 */
1948 	ushort keycode;
1949 	/**
1950 	 * A timestamp in milliseconds indicating when the event occurred.
1951 	 * These timestamps are relative to a starting point which should be considered arbitrary,
1952 	 * and only used to compare the dispatch times of events to one another.
1953 	 */
1954 	uint timestamp;
1955 }
1956 
1957 struct AtkMisc
1958 {
1959 	GObject parent;
1960 }
1961 
1962 /**
1963  * Usage of AtkMisc is deprecated since 2.12 and heavily discouraged.
1964  */
1965 struct AtkMiscClass
1966 {
1967 	GObjectClass parent;
1968 	/** */
1969 	extern(C) void function(AtkMisc* misc) threadsEnter;
1970 	/** */
1971 	extern(C) void function(AtkMisc* misc) threadsLeave;
1972 	void*[32] vfuncs;
1973 }
1974 
1975 struct AtkNoOpObject
1976 {
1977 	AtkObject parent;
1978 }
1979 
1980 struct AtkNoOpObjectClass
1981 {
1982 	AtkObjectClass parentClass;
1983 }
1984 
1985 struct AtkNoOpObjectFactory
1986 {
1987 	AtkObjectFactory parent;
1988 }
1989 
1990 struct AtkNoOpObjectFactoryClass
1991 {
1992 	AtkObjectFactoryClass parentClass;
1993 }
1994 
1995 struct AtkObject
1996 {
1997 	GObject parent;
1998 	char* description;
1999 	char* name;
2000 	AtkObject* accessibleParent;
2001 	AtkRole role;
2002 	AtkRelationSet* relationSet;
2003 	AtkLayer layer;
2004 }
2005 
2006 struct AtkObjectClass
2007 {
2008 	GObjectClass parent;
2009 	/**
2010 	 *
2011 	 * Params:
2012 	 *     accessible = an #AtkObject
2013 	 * Returns: a character string representing the accessible name of the object.
2014 	 */
2015 	extern(C) const(char)* function(AtkObject* accessible) getName;
2016 	/**
2017 	 *
2018 	 * Params:
2019 	 *     accessible = an #AtkObject
2020 	 * Returns: a character string representing the accessible description
2021 	 *     of the accessible.
2022 	 */
2023 	extern(C) const(char)* function(AtkObject* accessible) getDescription;
2024 	/**
2025 	 *
2026 	 * Params:
2027 	 *     accessible = an #AtkObject
2028 	 * Returns: an #AtkObject representing the accessible
2029 	 *     parent of the accessible
2030 	 */
2031 	extern(C) AtkObject* function(AtkObject* accessible) getParent;
2032 	/** */
2033 	extern(C) int function(AtkObject* accessible) getNChildren;
2034 	/** */
2035 	extern(C) AtkObject* function(AtkObject* accessible, int i) refChild;
2036 	/**
2037 	 *
2038 	 * Params:
2039 	 *     accessible = an #AtkObject
2040 	 * Returns: an integer which is the index of the accessible in its parent
2041 	 */
2042 	extern(C) int function(AtkObject* accessible) getIndexInParent;
2043 	/**
2044 	 *
2045 	 * Params:
2046 	 *     accessible = an #AtkObject
2047 	 * Returns: an #AtkRelationSet representing the relation set
2048 	 *     of the object.
2049 	 */
2050 	extern(C) AtkRelationSet* function(AtkObject* accessible) refRelationSet;
2051 	/**
2052 	 *
2053 	 * Params:
2054 	 *     accessible = an #AtkObject
2055 	 * Returns: an #AtkRole which is the role of the accessible
2056 	 */
2057 	extern(C) AtkRole function(AtkObject* accessible) getRole;
2058 	/**
2059 	 *
2060 	 * Params:
2061 	 *     accessible = an #AtkObject
2062 	 * Returns: an #AtkLayer which is the layer of the accessible
2063 	 */
2064 	extern(C) AtkLayer function(AtkObject* accessible) getLayer;
2065 	/**
2066 	 *
2067 	 * Params:
2068 	 *     accessible = an #AtkObject
2069 	 * Returns: a gint which is the zorder of the accessible, i.e. the depth at
2070 	 *     which the component is shown in relation to other components in the same
2071 	 *     container.
2072 	 */
2073 	extern(C) int function(AtkObject* accessible) getMdiZorder;
2074 	/**
2075 	 *
2076 	 * Params:
2077 	 *     accessible = an #AtkObject
2078 	 * Returns: a reference to an #AtkStateSet which is the state
2079 	 *     set of the accessible
2080 	 */
2081 	extern(C) AtkStateSet* function(AtkObject* accessible) refStateSet;
2082 	/** */
2083 	extern(C) void function(AtkObject* accessible, const(char)* name) setName;
2084 	/** */
2085 	extern(C) void function(AtkObject* accessible, const(char)* description) setDescription;
2086 	/** */
2087 	extern(C) void function(AtkObject* accessible, AtkObject* parent) setParent;
2088 	/** */
2089 	extern(C) void function(AtkObject* accessible, AtkRole role) setRole;
2090 	/**
2091 	 *
2092 	 * Params:
2093 	 *     accessible = an #AtkObject
2094 	 *     handler = a function to be called when a property changes its value
2095 	 * Returns: a #guint which is the handler id used in
2096 	 *     atk_object_remove_property_change_handler()
2097 	 */
2098 	extern(C) uint function(AtkObject* accessible, AtkPropertyChangeHandler* handler) connectPropertyChangeHandler;
2099 	/** */
2100 	extern(C) void function(AtkObject* accessible, uint handlerId) removePropertyChangeHandler;
2101 	/** */
2102 	extern(C) void function(AtkObject* accessible, void* data) initialize;
2103 	/** */
2104 	extern(C) void function(AtkObject* accessible, uint changeIndex, void* changedChild) childrenChanged;
2105 	/** */
2106 	extern(C) void function(AtkObject* accessible, int focusIn) focusEvent;
2107 	/** */
2108 	extern(C) void function(AtkObject* accessible, AtkPropertyValues* values) propertyChange;
2109 	/** */
2110 	extern(C) void function(AtkObject* accessible, const(char)* name, int stateSet) stateChange;
2111 	/** */
2112 	extern(C) void function(AtkObject* accessible) visibleDataChanged;
2113 	/** */
2114 	extern(C) void function(AtkObject* accessible, void** child) activeDescendantChanged;
2115 	/**
2116 	 *
2117 	 * Params:
2118 	 *     accessible = An #AtkObject.
2119 	 * Returns: an #AtkAttributeSet consisting of all
2120 	 *     explicit properties/annotations applied to the object, or an empty
2121 	 *     set if the object has no name-value pair attributes assigned to
2122 	 *     it. This #atkattributeset should be freed by a call to
2123 	 *     atk_attribute_set_free().
2124 	 */
2125 	extern(C) AtkAttributeSet* function(AtkObject* accessible) getAttributes;
2126 	/**
2127 	 *
2128 	 * Params:
2129 	 *     accessible = an #AtkObject
2130 	 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
2131 	 *     locale of @accessible.
2132 	 */
2133 	extern(C) const(char)* function(AtkObject* accessible) getObjectLocale;
2134 	AtkFunction pad1;
2135 }
2136 
2137 struct AtkObjectFactory
2138 {
2139 	GObject parent;
2140 }
2141 
2142 struct AtkObjectFactoryClass
2143 {
2144 	GObjectClass parentClass;
2145 	/** */
2146 	extern(C) AtkObject* function(GObject* obj) createAccessible;
2147 	/** */
2148 	extern(C) void function(AtkObjectFactory* factory) invalidate;
2149 	/** */
2150 	extern(C) GType function() getAccessibleType;
2151 	AtkFunction pad1;
2152 	AtkFunction pad2;
2153 }
2154 
2155 struct AtkPlug
2156 {
2157 	AtkObject parent;
2158 }
2159 
2160 struct AtkPlugClass
2161 {
2162 	AtkObjectClass parentClass;
2163 	/** */
2164 	extern(C) char* function(AtkPlug* obj) getObjectId;
2165 }
2166 
2167 /**
2168  * Note: @old_value field of #AtkPropertyValues will not contain a
2169  * valid value. This is a field defined with the purpose of contain
2170  * the previous value of the property, but is not used anymore.
2171  */
2172 struct AtkPropertyValues
2173 {
2174 	/**
2175 	 * The name of the ATK property which has changed.
2176 	 */
2177 	const(char)* propertyName;
2178 	/**
2179 	 * NULL. This field is not used anymore.
2180 	 */
2181 	GValue oldValue;
2182 	/**
2183 	 * The new value of the named property.
2184 	 */
2185 	GValue newValue;
2186 }
2187 
2188 struct AtkRange;
2189 
2190 /**
2191  * A data structure for holding a rectangle. Those coordinates are
2192  * relative to the component top-level parent.
2193  */
2194 struct AtkRectangle
2195 {
2196 	/**
2197 	 * X coordinate of the left side of the rectangle.
2198 	 */
2199 	int x;
2200 	/**
2201 	 * Y coordinate of the top side of the rectangle.
2202 	 */
2203 	int y;
2204 	/**
2205 	 * width of the rectangle.
2206 	 */
2207 	int width;
2208 	/**
2209 	 * height of the rectangle.
2210 	 */
2211 	int height;
2212 }
2213 
2214 struct AtkRegistry
2215 {
2216 	GObject parent;
2217 	GHashTable* factoryTypeRegistry;
2218 	GHashTable* factorySingletonCache;
2219 }
2220 
2221 struct AtkRegistryClass
2222 {
2223 	GObjectClass parentClass;
2224 }
2225 
2226 struct AtkRelation
2227 {
2228 	GObject parent;
2229 	GPtrArray* target;
2230 	AtkRelationType relationship;
2231 }
2232 
2233 struct AtkRelationClass
2234 {
2235 	GObjectClass parent;
2236 }
2237 
2238 struct AtkRelationSet
2239 {
2240 	GObject parent;
2241 	GPtrArray* relations;
2242 }
2243 
2244 struct AtkRelationSetClass
2245 {
2246 	GObjectClass parent;
2247 	AtkFunction pad1;
2248 	AtkFunction pad2;
2249 }
2250 
2251 struct AtkSelection;
2252 
2253 struct AtkSelectionIface
2254 {
2255 	GTypeInterface parent;
2256 	/**
2257 	 *
2258 	 * Params:
2259 	 *     selection = a #GObject instance that implements AtkSelectionIface
2260 	 *     i = a #gint specifying the child index.
2261 	 * Returns: TRUE if success, FALSE otherwise.
2262 	 */
2263 	extern(C) int function(AtkSelection* selection, int i) addSelection;
2264 	/**
2265 	 *
2266 	 * Params:
2267 	 *     selection = a #GObject instance that implements AtkSelectionIface
2268 	 * Returns: TRUE if success, FALSE otherwise.
2269 	 */
2270 	extern(C) int function(AtkSelection* selection) clearSelection;
2271 	/**
2272 	 *
2273 	 * Params:
2274 	 *     selection = a #GObject instance that implements AtkSelectionIface
2275 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2276 	 *         ith selection as opposed to the ith child).
2277 	 * Returns: an #AtkObject representing the
2278 	 *     selected accessible, or %NULL if @selection does not implement this
2279 	 *     interface.
2280 	 */
2281 	extern(C) AtkObject* function(AtkSelection* selection, int i) refSelection;
2282 	/**
2283 	 *
2284 	 * Params:
2285 	 *     selection = a #GObject instance that implements AtkSelectionIface
2286 	 * Returns: a gint representing the number of items selected, or 0
2287 	 *     if @selection does not implement this interface.
2288 	 */
2289 	extern(C) int function(AtkSelection* selection) getSelectionCount;
2290 	/**
2291 	 *
2292 	 * Params:
2293 	 *     selection = a #GObject instance that implements AtkSelectionIface
2294 	 *     i = a #gint specifying the child index.
2295 	 * Returns: a gboolean representing the specified child is selected, or 0
2296 	 *     if @selection does not implement this interface.
2297 	 */
2298 	extern(C) int function(AtkSelection* selection, int i) isChildSelected;
2299 	/**
2300 	 *
2301 	 * Params:
2302 	 *     selection = a #GObject instance that implements AtkSelectionIface
2303 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2304 	 *         ith selection as opposed to the ith child).
2305 	 * Returns: TRUE if success, FALSE otherwise.
2306 	 */
2307 	extern(C) int function(AtkSelection* selection, int i) removeSelection;
2308 	/**
2309 	 *
2310 	 * Params:
2311 	 *     selection = a #GObject instance that implements AtkSelectionIface
2312 	 * Returns: TRUE if success, FALSE otherwise.
2313 	 */
2314 	extern(C) int function(AtkSelection* selection) selectAllSelection;
2315 	/** */
2316 	extern(C) void function(AtkSelection* selection) selectionChanged;
2317 }
2318 
2319 struct AtkSocket
2320 {
2321 	AtkObject parent;
2322 	char* embeddedPlugId;
2323 }
2324 
2325 struct AtkSocketClass
2326 {
2327 	AtkObjectClass parentClass;
2328 	/** */
2329 	extern(C) void function(AtkSocket* obj, const(char)* plugId) embed;
2330 }
2331 
2332 struct AtkStateSet
2333 {
2334 	GObject parent;
2335 }
2336 
2337 struct AtkStateSetClass
2338 {
2339 	GObjectClass parent;
2340 }
2341 
2342 struct AtkStreamableContent;
2343 
2344 struct AtkStreamableContentIface
2345 {
2346 	GTypeInterface parent;
2347 	/**
2348 	 *
2349 	 * Params:
2350 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2351 	 * Returns: a gint which is the number of mime types supported by the object.
2352 	 */
2353 	extern(C) int function(AtkStreamableContent* streamable) getNMimeTypes;
2354 	/**
2355 	 *
2356 	 * Params:
2357 	 *     streamable = a GObject instance that implements AtkStreamableContent
2358 	 *     i = a gint representing the position of the mime type starting from 0
2359 	 * Returns: a gchar* representing the specified mime type; the caller
2360 	 *     should not free the character string.
2361 	 */
2362 	extern(C) const(char)* function(AtkStreamableContent* streamable, int i) getMimeType;
2363 	/**
2364 	 *
2365 	 * Params:
2366 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2367 	 *     mimeType = a gchar* representing the mime type
2368 	 * Returns: A #GIOChannel which contains the content in the
2369 	 *     specified mime type.
2370 	 */
2371 	extern(C) GIOChannel* function(AtkStreamableContent* streamable, const(char)* mimeType) getStream;
2372 	/**
2373 	 *
2374 	 * Params:
2375 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2376 	 *     mimeType = a gchar* representing the mime type, or NULL to request a URI
2377 	 *         for the default mime type.
2378 	 * Returns: Returns a string representing a URI, or %NULL
2379 	 *     if no corresponding URI can be constructed.
2380 	 */
2381 	extern(C) const(char)* function(AtkStreamableContent* streamable, const(char)* mimeType) getUri;
2382 	AtkFunction pad1;
2383 	AtkFunction pad2;
2384 	AtkFunction pad3;
2385 }
2386 
2387 struct AtkTable;
2388 
2389 struct AtkTableCell;
2390 
2391 /**
2392  * AtkTableCell is an interface for cells inside an #AtkTable.
2393  *
2394  * Since: 2.12
2395  */
2396 struct AtkTableCellIface
2397 {
2398 	GTypeInterface parent;
2399 	/**
2400 	 *
2401 	 * Params:
2402 	 *     cell = a GObject instance that implements AtkTableCellIface
2403 	 * Returns: a gint representing the number of columns occupied by this cell,
2404 	 *     or 0 if the cell does not implement this method.
2405 	 */
2406 	extern(C) int function(AtkTableCell* cell) getColumnSpan;
2407 	/**
2408 	 *
2409 	 * Params:
2410 	 *     cell = a GObject instance that implements AtkTableCellIface
2411 	 * Returns: a GPtrArray of AtkObjects
2412 	 *     representing the column header cells.
2413 	 */
2414 	extern(C) GPtrArray* function(AtkTableCell* cell) getColumnHeaderCells;
2415 	/**
2416 	 *
2417 	 * Params:
2418 	 *     cell = a GObject instance that implements AtkTableCellIface
2419 	 *     row = the row of the given cell.
2420 	 *     column = the column of the given cell.
2421 	 * Returns: TRUE if successful; FALSE otherwise.
2422 	 */
2423 	extern(C) int function(AtkTableCell* cell, int* row, int* column) getPosition;
2424 	/**
2425 	 *
2426 	 * Params:
2427 	 *     cell = a GObject instance that implements AtkTableCellIface
2428 	 * Returns: a gint representing the number of rows occupied by this cell,
2429 	 *     or 0 if the cell does not implement this method.
2430 	 */
2431 	extern(C) int function(AtkTableCell* cell) getRowSpan;
2432 	/**
2433 	 *
2434 	 * Params:
2435 	 *     cell = a GObject instance that implements AtkTableCellIface
2436 	 * Returns: a GPtrArray of AtkObjects
2437 	 *     representing the row header cells.
2438 	 */
2439 	extern(C) GPtrArray* function(AtkTableCell* cell) getRowHeaderCells;
2440 	/**
2441 	 *
2442 	 * Params:
2443 	 *     cell = a GObject instance that implements AtkTableCellIface
2444 	 *     row = the row index of the given cell.
2445 	 *     column = the column index of the given cell.
2446 	 *     rowSpan = the number of rows occupied by this cell.
2447 	 *     columnSpan = the number of columns occupied by this cell.
2448 	 * Returns: TRUE if successful; FALSE otherwise.
2449 	 */
2450 	extern(C) int function(AtkTableCell* cell, int* row, int* column, int* rowSpan, int* columnSpan) getRowColumnSpan;
2451 	/**
2452 	 *
2453 	 * Params:
2454 	 *     cell = a GObject instance that implements AtkTableCellIface
2455 	 * Returns: the atk object for the containing table.
2456 	 */
2457 	extern(C) AtkObject* function(AtkTableCell* cell) getTable;
2458 }
2459 
2460 struct AtkTableIface
2461 {
2462 	GTypeInterface parent;
2463 	/**
2464 	 *
2465 	 * Params:
2466 	 *     table = a GObject instance that implements AtkTableIface
2467 	 *     row = a #gint representing a row in @table
2468 	 *     column = a #gint representing a column in @table
2469 	 * Returns: an #AtkObject representing the referred
2470 	 *     to accessible
2471 	 */
2472 	extern(C) AtkObject* function(AtkTable* table, int row, int column) refAt;
2473 	/**
2474 	 *
2475 	 * Params:
2476 	 *     table = a GObject instance that implements AtkTableIface
2477 	 *     row = a #gint representing a row in @table
2478 	 *     column = a #gint representing a column in @table
2479 	 * Returns: a #gint representing the index at specified position.
2480 	 *     The value -1 is returned if the object at row,column is not a child
2481 	 *     of table or table does not implement this interface.
2482 	 */
2483 	extern(C) int function(AtkTable* table, int row, int column) getIndexAt;
2484 	/**
2485 	 *
2486 	 * Params:
2487 	 *     table = a GObject instance that implements AtkTableInterface
2488 	 *     index = a #gint representing an index in @table
2489 	 * Returns: a gint representing the column at the specified index,
2490 	 *     or -1 if the table does not implement this method.
2491 	 */
2492 	extern(C) int function(AtkTable* table, int index) getColumnAtIndex;
2493 	/**
2494 	 *
2495 	 * Params:
2496 	 *     table = a GObject instance that implements AtkTableInterface
2497 	 *     index = a #gint representing an index in @table
2498 	 * Returns: a gint representing the row at the specified index,
2499 	 *     or -1 if the table does not implement this method.
2500 	 */
2501 	extern(C) int function(AtkTable* table, int index) getRowAtIndex;
2502 	/**
2503 	 *
2504 	 * Params:
2505 	 *     table = a GObject instance that implements AtkTableIface
2506 	 * Returns: a gint representing the number of columns, or 0
2507 	 *     if value does not implement this interface.
2508 	 */
2509 	extern(C) int function(AtkTable* table) getNColumns;
2510 	/**
2511 	 *
2512 	 * Params:
2513 	 *     table = a GObject instance that implements AtkTableIface
2514 	 * Returns: a gint representing the number of rows, or 0
2515 	 *     if value does not implement this interface.
2516 	 */
2517 	extern(C) int function(AtkTable* table) getNRows;
2518 	/**
2519 	 *
2520 	 * Params:
2521 	 *     table = a GObject instance that implements AtkTableIface
2522 	 *     row = a #gint representing a row in @table
2523 	 *     column = a #gint representing a column in @table
2524 	 * Returns: a gint representing the column extent at specified position, or 0
2525 	 *     if value does not implement this interface.
2526 	 */
2527 	extern(C) int function(AtkTable* table, int row, int column) getColumnExtentAt;
2528 	/**
2529 	 *
2530 	 * Params:
2531 	 *     table = a GObject instance that implements AtkTableIface
2532 	 *     row = a #gint representing a row in @table
2533 	 *     column = a #gint representing a column in @table
2534 	 * Returns: a gint representing the row extent at specified position, or 0
2535 	 *     if value does not implement this interface.
2536 	 */
2537 	extern(C) int function(AtkTable* table, int row, int column) getRowExtentAt;
2538 	/**
2539 	 *
2540 	 * Params:
2541 	 *     table = a GObject instance that implements AtkTableInterface
2542 	 * Returns: a AtkObject* representing the
2543 	 *     table caption, or %NULL if value does not implement this interface.
2544 	 */
2545 	extern(C) AtkObject* function(AtkTable* table) getCaption;
2546 	/**
2547 	 *
2548 	 * Params:
2549 	 *     table = a GObject instance that implements AtkTableIface
2550 	 *     column = a #gint representing a column in @table
2551 	 * Returns: a gchar* representing the column description, or %NULL
2552 	 *     if value does not implement this interface.
2553 	 */
2554 	extern(C) const(char)* function(AtkTable* table, int column) getColumnDescription;
2555 	/**
2556 	 *
2557 	 * Params:
2558 	 *     table = a GObject instance that implements AtkTableIface
2559 	 *     column = a #gint representing a column in the table
2560 	 * Returns: a AtkObject* representing the
2561 	 *     specified column header, or %NULL if value does not implement this
2562 	 *     interface.
2563 	 */
2564 	extern(C) AtkObject* function(AtkTable* table, int column) getColumnHeader;
2565 	/**
2566 	 *
2567 	 * Params:
2568 	 *     table = a GObject instance that implements AtkTableIface
2569 	 *     row = a #gint representing a row in @table
2570 	 * Returns: a gchar* representing the row description, or
2571 	 *     %NULL if value does not implement this interface.
2572 	 */
2573 	extern(C) const(char)* function(AtkTable* table, int row) getRowDescription;
2574 	/**
2575 	 *
2576 	 * Params:
2577 	 *     table = a GObject instance that implements AtkTableIface
2578 	 *     row = a #gint representing a row in the table
2579 	 * Returns: a AtkObject* representing the
2580 	 *     specified row header, or %NULL if value does not implement this
2581 	 *     interface.
2582 	 */
2583 	extern(C) AtkObject* function(AtkTable* table, int row) getRowHeader;
2584 	/**
2585 	 *
2586 	 * Params:
2587 	 *     table = a GObject instance that implements AtkTableIface
2588 	 * Returns: a AtkObject* representing a summary description
2589 	 *     of the table, or zero if value does not implement this interface.
2590 	 */
2591 	extern(C) AtkObject* function(AtkTable* table) getSummary;
2592 	/** */
2593 	extern(C) void function(AtkTable* table, AtkObject* caption) setCaption;
2594 	/** */
2595 	extern(C) void function(AtkTable* table, int column, const(char)* description) setColumnDescription;
2596 	/** */
2597 	extern(C) void function(AtkTable* table, int column, AtkObject* header) setColumnHeader;
2598 	/** */
2599 	extern(C) void function(AtkTable* table, int row, const(char)* description) setRowDescription;
2600 	/** */
2601 	extern(C) void function(AtkTable* table, int row, AtkObject* header) setRowHeader;
2602 	/** */
2603 	extern(C) void function(AtkTable* table, AtkObject* accessible) setSummary;
2604 	/**
2605 	 *
2606 	 * Params:
2607 	 *     table = a GObject instance that implements AtkTableIface
2608 	 *     selected = a #gint** that is to contain the selected columns numbers
2609 	 * Returns: a gint representing the number of selected columns,
2610 	 *     or %0 if value does not implement this interface.
2611 	 */
2612 	extern(C) int function(AtkTable* table, int** selected) getSelectedColumns;
2613 	/**
2614 	 *
2615 	 * Params:
2616 	 *     table = a GObject instance that implements AtkTableIface
2617 	 *     selected = a #gint** that is to contain the selected row numbers
2618 	 * Returns: a gint representing the number of selected rows,
2619 	 *     or zero if value does not implement this interface.
2620 	 */
2621 	extern(C) int function(AtkTable* table, int** selected) getSelectedRows;
2622 	/**
2623 	 *
2624 	 * Params:
2625 	 *     table = a GObject instance that implements AtkTableIface
2626 	 *     column = a #gint representing a column in @table
2627 	 * Returns: a gboolean representing if the column is selected, or 0
2628 	 *     if value does not implement this interface.
2629 	 */
2630 	extern(C) int function(AtkTable* table, int column) isColumnSelected;
2631 	/**
2632 	 *
2633 	 * Params:
2634 	 *     table = a GObject instance that implements AtkTableIface
2635 	 *     row = a #gint representing a row in @table
2636 	 * Returns: a gboolean representing if the row is selected, or 0
2637 	 *     if value does not implement this interface.
2638 	 */
2639 	extern(C) int function(AtkTable* table, int row) isRowSelected;
2640 	/**
2641 	 *
2642 	 * Params:
2643 	 *     table = a GObject instance that implements AtkTableIface
2644 	 *     row = a #gint representing a row in @table
2645 	 *     column = a #gint representing a column in @table
2646 	 * Returns: a gboolean representing if the cell is selected, or 0
2647 	 *     if value does not implement this interface.
2648 	 */
2649 	extern(C) int function(AtkTable* table, int row, int column) isSelected;
2650 	/**
2651 	 *
2652 	 * Params:
2653 	 *     table = a GObject instance that implements AtkTableIface
2654 	 *     row = a #gint representing a row in @table
2655 	 * Returns: a gboolean representing if row was successfully added to selection,
2656 	 *     or 0 if value does not implement this interface.
2657 	 */
2658 	extern(C) int function(AtkTable* table, int row) addRowSelection;
2659 	/**
2660 	 *
2661 	 * Params:
2662 	 *     table = a GObject instance that implements AtkTableIface
2663 	 *     row = a #gint representing a row in @table
2664 	 * Returns: a gboolean representing if the row was successfully removed from
2665 	 *     the selection, or 0 if value does not implement this interface.
2666 	 */
2667 	extern(C) int function(AtkTable* table, int row) removeRowSelection;
2668 	/**
2669 	 *
2670 	 * Params:
2671 	 *     table = a GObject instance that implements AtkTableIface
2672 	 *     column = a #gint representing a column in @table
2673 	 * Returns: a gboolean representing if the column was successfully added to
2674 	 *     the selection, or 0 if value does not implement this interface.
2675 	 */
2676 	extern(C) int function(AtkTable* table, int column) addColumnSelection;
2677 	/**
2678 	 *
2679 	 * Params:
2680 	 *     table = a GObject instance that implements AtkTableIface
2681 	 *     column = a #gint representing a column in @table
2682 	 * Returns: a gboolean representing if the column was successfully removed from
2683 	 *     the selection, or 0 if value does not implement this interface.
2684 	 */
2685 	extern(C) int function(AtkTable* table, int column) removeColumnSelection;
2686 	/** */
2687 	extern(C) void function(AtkTable* table, int row, int numInserted) rowInserted;
2688 	/** */
2689 	extern(C) void function(AtkTable* table, int column, int numInserted) columnInserted;
2690 	/** */
2691 	extern(C) void function(AtkTable* table, int row, int numDeleted) rowDeleted;
2692 	/** */
2693 	extern(C) void function(AtkTable* table, int column, int numDeleted) columnDeleted;
2694 	/** */
2695 	extern(C) void function(AtkTable* table) rowReordered;
2696 	/** */
2697 	extern(C) void function(AtkTable* table) columnReordered;
2698 	/** */
2699 	extern(C) void function(AtkTable* table) modelChanged;
2700 }
2701 
2702 struct AtkText;
2703 
2704 struct AtkTextIface
2705 {
2706 	GTypeInterface parent;
2707 	/**
2708 	 *
2709 	 * Params:
2710 	 *     text = an #AtkText
2711 	 *     startOffset = a starting character offset within @text
2712 	 *     endOffset = an ending character offset within @text, or -1 for the end of the string.
2713 	 * Returns: a newly allocated string containing the text from @start_offset up
2714 	 *     to, but not including @end_offset. Use g_free() to free the returned
2715 	 *     string.
2716 	 */
2717 	extern(C) char* function(AtkText* text, int startOffset, int endOffset) getText;
2718 	/**
2719 	 *
2720 	 * Params:
2721 	 *     text = an #AtkText
2722 	 *     offset = position
2723 	 *     boundaryType = An #AtkTextBoundary
2724 	 *     startOffset = the starting character offset of the returned string
2725 	 *     endOffset = the offset of the first character after the
2726 	 *         returned substring
2727 	 * Returns: a newly allocated string containing the text after @offset bounded
2728 	 *     by the specified @boundary_type. Use g_free() to free the returned
2729 	 *     string.
2730 	 */
2731 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAfterOffset;
2732 	/**
2733 	 *
2734 	 * Params:
2735 	 *     text = an #AtkText
2736 	 *     offset = position
2737 	 *     boundaryType = An #AtkTextBoundary
2738 	 *     startOffset = the starting character offset of the returned string
2739 	 *     endOffset = the offset of the first character after the
2740 	 *         returned substring
2741 	 * Returns: a newly allocated string containing the text at @offset bounded
2742 	 *     by the specified @boundary_type. Use g_free() to free the returned
2743 	 *     string.
2744 	 */
2745 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAtOffset;
2746 	/**
2747 	 *
2748 	 * Params:
2749 	 *     text = an #AtkText
2750 	 *     offset = a character offset within @text
2751 	 * Returns: the character at @offset or 0 in the case of failure.
2752 	 */
2753 	extern(C) dchar function(AtkText* text, int offset) getCharacterAtOffset;
2754 	/**
2755 	 *
2756 	 * Params:
2757 	 *     text = an #AtkText
2758 	 *     offset = position
2759 	 *     boundaryType = An #AtkTextBoundary
2760 	 *     startOffset = the starting character offset of the returned string
2761 	 *     endOffset = the offset of the first character after the
2762 	 *         returned substring
2763 	 * Returns: a newly allocated string containing the text before @offset bounded
2764 	 *     by the specified @boundary_type. Use g_free() to free the returned
2765 	 *     string.
2766 	 */
2767 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextBeforeOffset;
2768 	/**
2769 	 *
2770 	 * Params:
2771 	 *     text = an #AtkText
2772 	 * Returns: the character offset of the position of the caret or -1 if
2773 	 *     the caret is not located inside the element or in the case of
2774 	 *     any other failure.
2775 	 */
2776 	extern(C) int function(AtkText* text) getCaretOffset;
2777 	/**
2778 	 *
2779 	 * Params:
2780 	 *     text = an #AtkText
2781 	 *     offset = the character offset at which to get the attributes, -1 means the offset of
2782 	 *         the character to be inserted at the caret location.
2783 	 *     startOffset = the address to put the start offset of the range
2784 	 *     endOffset = the address to put the end offset of the range
2785 	 * Returns: an #AtkAttributeSet which contains the attributes
2786 	 *     explicitly set at @offset. This #AtkAttributeSet should be freed by
2787 	 *     a call to atk_attribute_set_free().
2788 	 */
2789 	extern(C) AtkAttributeSet* function(AtkText* text, int offset, int* startOffset, int* endOffset) getRunAttributes;
2790 	/**
2791 	 *
2792 	 * Params:
2793 	 *     text = an #AtkText
2794 	 * Returns: an #AtkAttributeSet which contains the default text
2795 	 *     attributes for this #AtkText. This #AtkAttributeSet should be freed by
2796 	 *     a call to atk_attribute_set_free().
2797 	 */
2798 	extern(C) AtkAttributeSet* function(AtkText* text) getDefaultAttributes;
2799 	/** */
2800 	extern(C) void function(AtkText* text, int offset, int* x, int* y, int* width, int* height, AtkCoordType coords) getCharacterExtents;
2801 	/**
2802 	 *
2803 	 * Params:
2804 	 *     text = an #AtkText
2805 	 * Returns: the number of characters or -1 in case of failure.
2806 	 */
2807 	extern(C) int function(AtkText* text) getCharacterCount;
2808 	/**
2809 	 *
2810 	 * Params:
2811 	 *     text = an #AtkText
2812 	 *     x = screen x-position of character
2813 	 *     y = screen y-position of character
2814 	 *     coords = specify whether coordinates are relative to the screen or
2815 	 *         widget window
2816 	 * Returns: the offset to the character which is located at  the specified
2817 	 *     @x and @y coordinates of -1 in case of failure.
2818 	 */
2819 	extern(C) int function(AtkText* text, int x, int y, AtkCoordType coords) getOffsetAtPoint;
2820 	/**
2821 	 *
2822 	 * Params:
2823 	 *     text = an #AtkText
2824 	 * Returns: The number of selected regions, or -1 in the case of failure.
2825 	 */
2826 	extern(C) int function(AtkText* text) getNSelections;
2827 	/**
2828 	 *
2829 	 * Params:
2830 	 *     text = an #AtkText
2831 	 *     selectionNum = The selection number.  The selected regions are
2832 	 *         assigned numbers that correspond to how far the region is from the
2833 	 *         start of the text.  The selected region closest to the beginning
2834 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2835 	 *         moving or deleting a selected region can change the numbering.
2836 	 *     startOffset = passes back the starting character offset of the selected region
2837 	 *     endOffset = passes back the ending character offset (offset immediately past)
2838 	 *         of the selected region
2839 	 * Returns: a newly allocated string containing the selected text. Use g_free()
2840 	 *     to free the returned string.
2841 	 */
2842 	extern(C) char* function(AtkText* text, int selectionNum, int* startOffset, int* endOffset) getSelection;
2843 	/**
2844 	 *
2845 	 * Params:
2846 	 *     text = an #AtkText
2847 	 *     startOffset = the starting character offset of the selected region
2848 	 *     endOffset = the offset of the first character after the selected region.
2849 	 * Returns: %TRUE if successful, %FALSE otherwise
2850 	 */
2851 	extern(C) int function(AtkText* text, int startOffset, int endOffset) addSelection;
2852 	/**
2853 	 *
2854 	 * Params:
2855 	 *     text = an #AtkText
2856 	 *     selectionNum = The selection number.  The selected regions are
2857 	 *         assigned numbers that correspond to how far the region is from the
2858 	 *         start of the text.  The selected region closest to the beginning
2859 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2860 	 *         moving or deleting a selected region can change the numbering.
2861 	 * Returns: %TRUE if successful, %FALSE otherwise
2862 	 */
2863 	extern(C) int function(AtkText* text, int selectionNum) removeSelection;
2864 	/**
2865 	 *
2866 	 * Params:
2867 	 *     text = an #AtkText
2868 	 *     selectionNum = The selection number.  The selected regions are
2869 	 *         assigned numbers that correspond to how far the region is from the
2870 	 *         start of the text.  The selected region closest to the beginning
2871 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2872 	 *         moving or deleting a selected region can change the numbering.
2873 	 *     startOffset = the new starting character offset of the selection
2874 	 *     endOffset = the new end position of (e.g. offset immediately past)
2875 	 *         the selection
2876 	 * Returns: %TRUE if successful, %FALSE otherwise
2877 	 */
2878 	extern(C) int function(AtkText* text, int selectionNum, int startOffset, int endOffset) setSelection;
2879 	/**
2880 	 *
2881 	 * Params:
2882 	 *     text = an #AtkText
2883 	 *     offset = the character offset of the new caret position
2884 	 * Returns: %TRUE if successful, %FALSE otherwise.
2885 	 */
2886 	extern(C) int function(AtkText* text, int offset) setCaretOffset;
2887 	/** */
2888 	extern(C) void function(AtkText* text, int position, int length) textChanged;
2889 	/** */
2890 	extern(C) void function(AtkText* text, int location) textCaretMoved;
2891 	/** */
2892 	extern(C) void function(AtkText* text) textSelectionChanged;
2893 	/** */
2894 	extern(C) void function(AtkText* text) textAttributesChanged;
2895 	/** */
2896 	extern(C) void function(AtkText* text, int startOffset, int endOffset, AtkCoordType coordType, AtkTextRectangle* rect) getRangeExtents;
2897 	/**
2898 	 *
2899 	 * Params:
2900 	 *     text = an #AtkText
2901 	 *     rect = An AtkTextRectangle giving the dimensions of the bounding box.
2902 	 *     coordType = Specify whether coordinates are relative to the screen or widget window.
2903 	 *     xClipType = Specify the horizontal clip type.
2904 	 *     yClipType = Specify the vertical clip type.
2905 	 * Returns: Array of AtkTextRange. The last
2906 	 *     element of the array returned by this function will be NULL.
2907 	 */
2908 	extern(C) AtkTextRange** function(AtkText* text, AtkTextRectangle* rect, AtkCoordType coordType, AtkTextClipType xClipType, AtkTextClipType yClipType) getBoundedRanges;
2909 	/**
2910 	 *
2911 	 * Params:
2912 	 *     text = an #AtkText
2913 	 *     offset = position
2914 	 *     granularity = An #AtkTextGranularity
2915 	 *     startOffset = the starting character offset of the returned string, or -1
2916 	 *         in the case of error (e.g. invalid offset, not implemented)
2917 	 *     endOffset = the offset of the first character after the returned string,
2918 	 *         or -1 in the case of error (e.g. invalid offset, not implemented)
2919 	 * Returns: a newly allocated string containing the text at
2920 	 *     the @offset bounded by the specified @granularity. Use g_free()
2921 	 *     to free the returned string.  Returns %NULL if the offset is invalid
2922 	 *     or no implementation is available.
2923 	 */
2924 	extern(C) char* function(AtkText* text, int offset, AtkTextGranularity granularity, int* startOffset, int* endOffset) getStringAtOffset;
2925 	/**
2926 	 *
2927 	 * Params:
2928 	 *     text = an #AtkText
2929 	 *     startOffset = start offset in the @text
2930 	 *     endOffset = end offset in the @text, or -1 for the end of the text.
2931 	 *     type = specify where the object should be made visible.
2932 	 * Returns: whether scrolling was successful.
2933 	 */
2934 	extern(C) int function(AtkText* text, int startOffset, int endOffset, AtkScrollType type) scrollSubstringTo;
2935 	/**
2936 	 *
2937 	 * Params:
2938 	 *     text = an #AtkText
2939 	 *     startOffset = start offset in the @text
2940 	 *     endOffset = end offset in the @text, or -1 for the end of the text.
2941 	 *     coords = specify whether coordinates are relative to the screen or to the
2942 	 *         parent object.
2943 	 *     x = x-position where to scroll to
2944 	 *     y = y-position where to scroll to
2945 	 * Returns: whether scrolling was successful.
2946 	 */
2947 	extern(C) int function(AtkText* text, int startOffset, int endOffset, AtkCoordType coords, int x, int y) scrollSubstringToPoint;
2948 }
2949 
2950 /**
2951  * A structure used to describe a text range.
2952  */
2953 struct AtkTextRange
2954 {
2955 	/**
2956 	 * A rectangle giving the bounds of the text range
2957 	 */
2958 	AtkTextRectangle bounds;
2959 	/**
2960 	 * The start offset of a AtkTextRange
2961 	 */
2962 	int startOffset;
2963 	/**
2964 	 * The end offset of a AtkTextRange
2965 	 */
2966 	int endOffset;
2967 	/**
2968 	 * The text in the text range
2969 	 */
2970 	char* content;
2971 }
2972 
2973 /**
2974  * A structure used to store a rectangle used by AtkText.
2975  */
2976 struct AtkTextRectangle
2977 {
2978 	/**
2979 	 * The horizontal coordinate of a rectangle
2980 	 */
2981 	int x;
2982 	/**
2983 	 * The vertical coordinate of a rectangle
2984 	 */
2985 	int y;
2986 	/**
2987 	 * The width of a rectangle
2988 	 */
2989 	int width;
2990 	/**
2991 	 * The height of a rectangle
2992 	 */
2993 	int height;
2994 }
2995 
2996 /**
2997  * A set of ATK utility functions which are used to support event
2998  * registration of various types, and obtaining the 'root' accessible
2999  * of a process and information about the current ATK implementation
3000  * and toolkit version.
3001  */
3002 struct AtkUtil
3003 {
3004 	GObject parent;
3005 }
3006 
3007 struct AtkUtilClass
3008 {
3009 	GObjectClass parent;
3010 	/** */
3011 	extern(C) uint function(GSignalEmissionHook listener, const(char)* eventType) addGlobalEventListener;
3012 	/** */
3013 	extern(C) void function(uint listenerId) removeGlobalEventListener;
3014 	/** */
3015 	extern(C) uint function(AtkKeySnoopFunc listener, void* data) addKeyEventListener;
3016 	/** */
3017 	extern(C) void function(uint listenerId) removeKeyEventListener;
3018 	/** */
3019 	extern(C) AtkObject* function() getRoot;
3020 	/** */
3021 	extern(C) const(char)* function() getToolkitName;
3022 	/** */
3023 	extern(C) const(char)* function() getToolkitVersion;
3024 }
3025 
3026 struct AtkValue;
3027 
3028 struct AtkValueIface
3029 {
3030 	GTypeInterface parent;
3031 	/** */
3032 	extern(C) void function(AtkValue* obj, GValue* value) getCurrentValue;
3033 	/** */
3034 	extern(C) void function(AtkValue* obj, GValue* value) getMaximumValue;
3035 	/** */
3036 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumValue;
3037 	/**
3038 	 *
3039 	 * Params:
3040 	 *     obj = a GObject instance that implements AtkValueIface
3041 	 *     value = a #GValue which is the desired new accessible value.
3042 	 * Returns: %TRUE if new value is successfully set, %FALSE otherwise.
3043 	 */
3044 	extern(C) int function(AtkValue* obj, GValue* value) setCurrentValue;
3045 	/** */
3046 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumIncrement;
3047 	/** */
3048 	extern(C) void function(AtkValue* obj, double* value, char** text) getValueAndText;
3049 	/**
3050 	 *
3051 	 * Params:
3052 	 *     obj = a GObject instance that implements AtkValueIface
3053 	 * Returns: a newly allocated #AtkRange
3054 	 *     that represents the minimum, maximum and descriptor (if available)
3055 	 *     of @obj. NULL if that range is not defined.
3056 	 */
3057 	extern(C) AtkRange* function(AtkValue* obj) getRange;
3058 	/**
3059 	 *
3060 	 * Params:
3061 	 *     obj = a GObject instance that implements AtkValueIface
3062 	 * Returns: the minimum increment by which the value of this
3063 	 *     object may be changed. zero if undefined.
3064 	 */
3065 	extern(C) double function(AtkValue* obj) getIncrement;
3066 	/**
3067 	 *
3068 	 * Params:
3069 	 *     obj = a GObject instance that implements AtkValueIface
3070 	 * Returns: an #GSList of
3071 	 *     #AtkRange which each of the subranges defined for this object. Free
3072 	 *     the returns list with g_slist_free().
3073 	 */
3074 	extern(C) GSList* function(AtkValue* obj) getSubRanges;
3075 	/** */
3076 	extern(C) void function(AtkValue* obj, double newValue) setValue;
3077 }
3078 
3079 struct AtkWindow;
3080 
3081 struct AtkWindowIface
3082 {
3083 	GTypeInterface parent;
3084 }
3085 
3086 /**
3087  * A function which is called when an object emits a matching event,
3088  * as used in #atk_add_focus_tracker.
3089  * Currently the only events for which object-specific handlers are
3090  * supported are events of type "focus:".  Most clients of ATK will prefer to
3091  * attach signal handlers for the various ATK signals instead.
3092  *
3093  * see atk_add_focus_tracker.
3094  *
3095  * Params:
3096  *     obj = An #AtkObject instance for whom the callback will be called when
3097  *         the specified event (e.g. 'focus:') takes place.
3098  */
3099 public alias extern(C) void function(AtkObject* obj) AtkEventListener;
3100 
3101 /**
3102  * An #AtkEventListenerInit function is a special function that is
3103  * called in order to initialize the per-object event registration system
3104  * used by #AtkEventListener, if any preparation is required.
3105  *
3106  * see atk_focus_tracker_init.
3107  */
3108 public alias extern(C) void function() AtkEventListenerInit;
3109 
3110 /**
3111  * The type of callback function used for
3112  * atk_component_add_focus_handler() and
3113  * atk_component_remove_focus_handler()
3114  *
3115  * Deprecated: Deprecated with atk_component_add_focus_handler()
3116  * and atk_component_remove_focus_handler(). See those
3117  * methods for more information.
3118  *
3119  * Params:
3120  *     object = the #AtkObject that receives/lose the focus
3121  *     focusIn = TRUE if the object receives the focus
3122  */
3123 public alias extern(C) void function(AtkObject* object, int focusIn) AtkFocusHandler;
3124 
3125 /**
3126  * An AtkFunction is a function definition used for padding which has
3127  * been added to class and interface structures to allow for expansion
3128  * in the future.
3129  *
3130  * Params:
3131  *     userData = custom data defined by the user
3132  *
3133  * Returns: not used
3134  */
3135 public alias extern(C) int function(void* userData) AtkFunction;
3136 
3137 /**
3138  * An #AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs,
3139  * if registered via atk_add_key_event_listener.  It allows for pre-emptive
3140  * interception of key events via the return code as described below.
3141  *
3142  * Params:
3143  *     event = an AtkKeyEventStruct containing information about the key event for which
3144  *         notification is being given.
3145  *     userData = a block of data which will be passed to the event listener, on notification.
3146  *
3147  * Returns: TRUE (nonzero) if the event emission should be stopped and the event
3148  *     discarded without being passed to the normal GUI recipient; FALSE (zero) if the
3149  *     event dispatch to the client application should proceed as normal.
3150  *
3151  *     see atk_add_key_event_listener.
3152  */
3153 public alias extern(C) int function(AtkKeyEventStruct* event, void* userData) AtkKeySnoopFunc;
3154 
3155 /**
3156  * An AtkPropertyChangeHandler is a function which is executed when an
3157  * AtkObject's property changes value. It is specified in a call to
3158  * atk_object_connect_property_change_handler().
3159  *
3160  * Deprecated: Since 2.12.
3161  *
3162  * Params:
3163  *     obj = atkobject which property changes
3164  *     vals = values changed
3165  */
3166 public alias extern(C) void function(AtkObject* obj, AtkPropertyValues* vals) AtkPropertyChangeHandler;
3167 
3168 /**
3169  * Like atk_get_binary_age(), but from the headers used at
3170  * application compile time, rather than from the library linked
3171  * against at application run time.
3172  */
3173 enum BINARY_AGE = 23810;
3174 alias ATK_BINARY_AGE = BINARY_AGE;
3175 
3176 /**
3177  * Like atk_get_interface_age(), but from the headers used at
3178  * application compile time, rather than from the library linked
3179  * against at application run time.
3180  */
3181 enum INTERFACE_AGE = 1;
3182 alias ATK_INTERFACE_AGE = INTERFACE_AGE;
3183 
3184 /**
3185  * Like atk_get_major_version(), but from the headers used at
3186  * application compile time, rather than from the library linked
3187  * against at application run time.
3188  */
3189 enum MAJOR_VERSION = 2;
3190 alias ATK_MAJOR_VERSION = MAJOR_VERSION;
3191 
3192 /**
3193  * Like atk_get_micro_version(), but from the headers used at
3194  * application compile time, rather than from the library linked
3195  * against at application run time.
3196  */
3197 enum MICRO_VERSION = 0;
3198 alias ATK_MICRO_VERSION = MICRO_VERSION;
3199 
3200 /**
3201  * Like atk_get_minor_version(), but from the headers used at
3202  * application compile time, rather than from the library linked
3203  * against at application run time.
3204  */
3205 enum MINOR_VERSION = 38;
3206 alias ATK_MINOR_VERSION = MINOR_VERSION;
3207 
3208 /**
3209  * A macro that should be defined by the user prior to including
3210  * the atk/atk.h header.
3211  * The definition should be one of the predefined ATK version
3212  * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
3213  *
3214  * This macro defines the earliest version of ATK that the package is
3215  * required to be able to compile against.
3216  *
3217  * If the compiler is configured to warn about the use of deprecated
3218  * functions, then using functions that were deprecated in version
3219  * %ATK_VERSION_MIN_REQUIRED or earlier will cause warnings (but
3220  * using functions deprecated in later releases will not).
3221  */
3222 enum VERSION_MIN_REQUIRED = 2;
3223 alias ATK_VERSION_MIN_REQUIRED = VERSION_MIN_REQUIRED;